/* ══════════════════════════════════════════════════════════════════════════
   TOYOTA TYPE — brand font (see Design-asset/Toyota type font/)
   Same @font-face set is mirrored in atpsg_dashboard/assets/dashboard.css —
   keep both in sync, this is the platform's single brand typeface.
══════════════════════════════════════════════════════════════════════════ */
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-Light.ttf') format('truetype'); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-LightIt.ttf') format('truetype'); font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-RegularIt.ttf') format('truetype'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-Semibold.ttf') format('truetype'); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-SemiboldIt.ttf') format('truetype'); font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-Bold.ttf') format('truetype'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-BoldIt.ttf') format('truetype'); font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-Black.ttf') format('truetype'); font-weight: 900; font-style: normal; font-display: swap; }
@font-face { font-family: 'Toyota Type'; src: url('/assets/fonts/ToyotaType-BlackIt.ttf') format('truetype'); font-weight: 900; font-style: italic; font-display: swap; }

/* ══════════════════════════════════════════════════════════════════════════
   DESIGN TOKENS
   Canonical brand/status palette — MUST match atpsg_dashboard/assets/dashboard.css :root.
   Phase 0 (foundation) only: tokens defined here, existing per-page inline
   styles NOT yet migrated to reference them (that is Phase 1-3 rollout).
══════════════════════════════════════════════════════════════════════════ */
:root {
    --font-family-base: 'Toyota Type', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;

    --text-h1: 32px;
    --text-h2: 24px;
    --text-h3: 18px;
    --text-body: 15px;
    --text-form: 13px;
    --text-caption: 12px;
    --text-callout-label: 14px;

    --color-brand: #9B2335;
    --color-brand-hover: #7d1b28;
    --color-brand-accent: #EB0A1E;
    --color-danger: #EE1B2E;
    --color-danger-bg: #F9BEC2;
    --color-success: #2BAB81;
    --color-success-bg: #DDF4ED;
    --color-warning: #D2A328;
    --color-warning-bg: #FAF0B7;
    --color-neutral: #444444;
    --color-neutral-bg: #D1D1D1;

    --color-text-primary: #1a1a1a;
    /* Was #666666 (spec-guessed value, near-zero real usage) — #555555 is
       the color ~77 existing call sites actually use for secondary/label
       text; token updated to match real usage instead of forcing 77 call
       sites to a color nobody had adopted. See DESIGN_TOKEN_SPEC.md. */
    --color-text-secondary: #555555;
    --color-border: #d8d8d8;
    --color-surface: #ffffff;
    --color-surface-alt: #fafafa;
    /* Canonical pick among 8 near-duplicate light grays in use
       (#efefef/e6e6e6/f5f5f5/e8e8e8/f0f0f0/e0e0e0/ececec/e4e4e4) — #efefef
       had the most existing call sites, chosen as canonical rather than
       inventing a 9th value. See DESIGN_TOKEN_SPEC.md. */
    --color-surface-muted: #efefef;
    /* Pure black used as a solid button/bar surface (Save buttons, admin
       action links) — distinct role from --color-text-primary (#1a1a1a,
       body text). Kept separate rather than forcing 31 button/bar call
       sites onto the near-black text color. */
    --color-ink: #000000;

    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 24px;
    --space-6: 32px;

    /* ── Form controls (Input/Textarea/Dropdown) ─────────────────────── */
    --field-border: 1.5px solid var(--color-border);
    --field-radius: 8px;
    --field-radius-compact: 6px;
    --field-padding: 8px 12px;
    --field-focus-ring: 0 0 0 3px rgba(155, 35, 53, 0.12);
}

/* ── Reset & Base ──────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

/* Canonical page title — every *_update.py/*_overall.py page's H1 uses this
   instead of a one-off inline style. Matches atpsg_dashboard's .page-title
   (32px/700, see product/DESIGN_TOKEN_SPEC.md). */
.page-title {
    font-family: var(--font-family-base);
    font-weight: 700;
    font-size: var(--text-h1);
    color: var(--color-text-primary);
    margin: 0;
}

/* Canonical page subtitle — the "last submitted"/date line under a page
   title. Was 14/15/16px, weight 400/500/700, mixed across otherwise
   identical *_update.py/*_overall.py page pairs. */
.page-subtitle {
    font-family: var(--font-family-base);
    font-weight: 500;
    font-size: var(--text-callout-label);
    color: var(--color-text-secondary);
    margin: 0;
}

body {
    margin: 0;
    padding: 0;
    font-family: var(--font-family-base);
    font-size: var(--text-body);
    color: var(--color-text-primary);
}

a { text-decoration: none; }

/* ══════════════════════════════════════════════════════════════════════════
   LANDING PAGE  (asmc-security-platform-bg.png)
══════════════════════════════════════════════════════════════════════════ */

.landing-page {
    min-height: 100vh;
    /* Left-to-right fade (dark -> clear), not a uniform tint — the source
       image's right half (car/robot arm/network map) is meant to read at
       full brightness, matching the reference; a flat overlay across the
       whole image was washing that detail out too. */
    background:
        linear-gradient(90deg,
            rgba(6, 8, 16, 0.94) 0%,
            rgba(6, 8, 16, 0.82) 28%,
            rgba(6, 8, 16, 0.45) 50%,
            rgba(6, 8, 16, 0.05) 72%,
            rgba(6, 8, 16, 0) 100%),
        url('/assets/asmc-security-platform-bg.png') center / cover no-repeat;
    display: flex;
    flex-direction: column;
    padding: 28px 36px;
    position: relative;
    overflow: hidden;
}

/* TOYOTA word-mark */
.toyota-logo {
    color: var(--color-brand-accent);
    font-size: 18px;
    font-weight: 900;
    letter-spacing: 2px;
    user-select: none;
}

/* Body: feature sidebar (left) + hero content (right) */
.landing-content {
    flex: 1;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 64px;
    padding: 0 4vw 50px 4vw;
}

/* Left-side vertical feature list */
.landing-sidebar {
    display: flex;
    flex-direction: column;
    gap: 28px;
    position: relative;
    padding-left: 4px;
    flex-shrink: 0;
}
/* Connecting vertical line through the icon column, like the reference */
.landing-sidebar::before {
    content: "";
    position: absolute;
    left: 27px;
    top: 28px;
    bottom: 28px;
    width: 1px;
    background: rgba(255, 255, 255, 0.18);
    z-index: 0;
}
.landing-feature-item {
    display: flex;
    align-items: center;
    gap: 16px;
    z-index: 1;
}
.landing-feature-icon {
    width: 54px;
    height: 54px;
    min-width: 54px;
    display: block;
}
.landing-feature-label {
    color: rgba(255, 255, 255, 0.92);
    font-size: 14px;
    font-weight: 500;
    line-height: 1.3;
    max-width: 110px;
}

/* Right-side hero text + CTA — all centered (title, subtitle, divider,
   button) rather than left-aligned within the hero column. */
.landing-hero {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
    min-width: 0;
}

.landing-text-block {
    text-align: center;
}

.landing-title {
    font-size: clamp(32px, 4.2vw, 56px);
    font-weight: 800;
    color: #ffffff;
    margin: 0 0 18px 0;
    letter-spacing: -0.5px;
    line-height: 1.15;
}

.landing-divider {
    border: none;
    border-top: 2.5px solid var(--color-brand-accent);
    width: 100%;
    max-width: 460px;
    margin: 0 auto 18px auto;
    opacity: 1;
}

.landing-subtitle {
    font-size: clamp(15px, 1.6vw, 19px);
    color: rgba(255, 255, 255, 0.80);
    margin: 0 auto;
    font-weight: 400;
    max-width: 480px;
}

@media (max-width: 900px) {
    .landing-content { flex-direction: column; align-items: center; gap: 32px; }
    .landing-sidebar { flex-direction: row; flex-wrap: wrap; gap: 20px 28px; justify-content: center; }
    .landing-sidebar::before { display: none; }
    .landing-feature-label { max-width: none; }
    .landing-hero { align-items: center; }
    .landing-text-block { text-align: center; }
}

/* "Assessment" pill button */
.assessment-btn {
    background-color: #f2ece0;
    color: #2b2b2b;
    border: none;
    padding: 15px 36px;
    font-size: 15px;
    font-weight: 700;
    border-radius: 8px;
    cursor: pointer;
    letter-spacing: 0.2px;
    display: inline-flex;
    align-items: center;
    transition: background-color 0.15s, transform 0.1s;
}
.assessment-btn:hover  { background-color: #e4ddd0; }
.assessment-btn:active { transform: scale(0.97); }

/* User icon – bottom left */
.landing-user-icon {
    position: absolute;
    bottom: 28px;
    left: 36px;
    color: rgba(255, 255, 255, 0.55);
    cursor: pointer;
}
.landing-user-icon:hover { color: rgba(255, 255, 255, 0.85); }


/* ══════════════════════════════════════════════════════════════════════════
   HOME PAGE  (assetmint.png)
══════════════════════════════════════════════════════════════════════════ */

.home-page {
    min-height: 100vh;
    background: #ffffff;
    padding: 36px 52px 100px 52px;
    position: relative;
}

/* Header row: title left, doc-icon right */
.home-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.home-title {
    font-size: 26px;
    font-weight: 700;
    color: #1a1a1a;
    margin: 0;
}

.home-doc-icon {
    color: #555;
    cursor: pointer;
    font-size: 22px;
}
.home-doc-icon:hover { color: #222; }

.logout-btn {
    display: inline-flex;
    align-items: center;
    padding: 5px 12px;
    font-size: 13px;
    font-weight: 500;
    color: #555;
    background: transparent;
    border: 1px solid #ccc;
    border-radius: 6px;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s;
    white-space: nowrap;
}
.logout-btn:hover {
    border-color: #9B2335;
    color: #9B2335;
}

.home-hr {
    border: none;
    border-top: 1.5px solid #d8d8d8;
    margin: 14px 0 28px 0;
}

/* ── Section blocks ────────────────────────────────────────────────────── */
.section-container {
    margin-bottom: 40px;
}

/* Dark-red label bar */
.section-bar {
    background-color: #9B2335;
    color: #ffffff;
    padding: 10px 20px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 20px;
    user-select: none;
}

/* Grid of standard / action buttons */
.standards-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    padding-left: 4px;
}

.standard-btn {
    background-color: #e8e8e8;
    color: #2b2b2b;
    padding: 18px 28px;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 500;
    min-width: 148px;
    text-align: center;
    cursor: pointer;
    user-select: none;
    transition: background-color 0.15s, box-shadow 0.15s;
    line-height: 1.3;
}
.standard-btn:hover {
    background-color: #d6d6d6;
    box-shadow: 0 2px 8px rgba(0,0,0,0.10);
}

/* ── Bottom bar (shared across pages) ─────────────────────────────────── */
.bottom-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 12px 52px;
    background: #ffffff;
    border-top: 1px solid #e4e4e4;
    display: flex;
    align-items: center;
    gap: 12px;
    z-index: 100;
}

.back-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background-color: #e8e8e8;
    color: #2b2b2b;
    padding: 8px 20px;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    user-select: none;
    transition: background-color 0.15s;
}
.back-btn:hover { background-color: #d6d6d6; }

/* Site/standard tile hover */
.site-tile:hover {
    box-shadow: 0 4px 14px rgba(0,0,0,0.10);
    border-color: #9B2335 !important;
}


/* ══════════════════════════════════════════════════════════════════════════
   ATPSG OVERALL PAGE
══════════════════════════════════════════════════════════════════════════ */

/* Category row hover */
[id*="cat-row-click"]:hover {
    background-color: #f9f9f9 !important;
}

/* Sub-row hover */
.sub-row-hover:hover {
    background-color: #f2f2f2;
}

/* Eye icon hover */
[id*="eye-icon"]:hover {
    color: #9B2335 !important;
}

/* Evaluation badges */
.badge-implemented   { color: #2BAB81; background-color: #DDF4ED; }
.badge-in-progress   { color: #D2A328; background-color: #FAF0B7; }
.badge-not-impl      { color: #EE1B2E; background-color: #F9BEC2; }
.badge-na            { color: #444444; background-color: #D1D1D1; }

/* dbc.Collapse transition */
.collapsing { transition: height 0.2s ease; }

/* Progress bar */
.progress-outer {
    width: 80px;
    height: 8px;
    background-color: #e0e0e0;
    border-radius: 4px;
    overflow: hidden;
    display: inline-block;
    vertical-align: middle;
}
.progress-inner {
    height: 100%;
    background-color: #2BAB81;
    border-radius: 4px;
}

/* Dash 4.x: dcc.Input container fix — Dash 4 sets height:34px + overflow:hidden on
   .dash-input-container; external padding in style prop clips the input widget.
   Allow container to grow, pin children to 34px so they stay fully visible. */
.dash-input-container {
    height: auto !important;
    min-height: 34px;
}
.dash-input-container .dash-input-stepper,
.dash-input-container .dash-input-element {
    height: 34px !important;
}

/* Login page input focus */
input:focus {
    border-color: #9B2335 !important;
    outline: none;
    box-shadow: 0 0 0 3px rgba(155, 35, 53, 0.12);
}

/* Modal styling */
.modal-header { background-color: #fafafa; }
.modal-title  { font-size: 14px !important; }


/* ══════════════════════════════════════════════════════════════════════════
   UPDATE FORM PAGE
══════════════════════════════════════════════════════════════════════════ */

/* Textarea focus */
textarea:focus {
    border-color: #9B2335 !important;
    outline: none;
    box-shadow: 0 0 0 3px rgba(155, 35, 53, 0.10);
}

/* Dropdown Select2 override */
.Select-control:focus,
.Select.is-focused:not(.is-open) > .Select-control {
    border-color: #9B2335 !important;
    box-shadow: 0 0 0 3px rgba(155, 35, 53, 0.10) !important;
}

/* Save button hover */
#upd-save-btn:hover  { background-color: #7d1b28 !important; }
#upd-clear-btn:hover { background-color: #d6d6d6 !important; }

/* Date picker alignment */
.SingleDatePickerInput { border-radius: 8px !important; border-color: #d8d8d8 !important; }
.DateInput_input { font-size: 14px !important; padding: 8px 12px !important; }

/* Calendar popup must float above later page content — without an explicit
   z-index it can render underneath sibling sections that come after it in
   the DOM (e.g. Submission Status' "Status Matrix" section), visually
   clipping the bottom rows of the calendar. */
.SingleDatePicker_picker {
    z-index: 999 !important;
}

/* Full-width date pickers (Supplier "Activity target by", Computer OS "Target
   completed date") — scoped to this class so other modules' date pickers keep
   their default width. !important needed: react-dates ships its own
   .DateInput / .DateInput_1 rule (width: 130px) that otherwise wins the
   specificity tie since its stylesheet loads after custom.css. */
.date-full-width, .date-full-width .SingleDatePicker,
.date-full-width .SingleDatePickerInput, .date-full-width .DateInput {
    width: 100% !important;
    display: block !important;
}
.date-full-width .DateInput_input {
    width: 100% !important;
    box-sizing: border-box !important;
}

/* Hide Plotly modebar (bottom-right toolbar) */
.modebar { display: none !important; }


/* ══════════════════════════════════════════════════════════════════════════
   MASTER MAINTENANCE — COMPANY MODAL (mmc-*)
   Colors match the rest of the system: #8B0000 buttons, #4CAF50/#dc3545
   status pair.
══════════════════════════════════════════════════════════════════════════ */

/* Status — Enable / Disable segmented toggle */
.mmc-status-toggle { display: flex; gap: 8px; }
.mmc-status-toggle label {
    flex: 1;
    text-align: center;
    padding: 8px 0;
    border-radius: 6px;
    border: 1.5px solid #d8d8d8;
    font-size: 13px;
    font-weight: 600;
    color: #888;
    cursor: pointer;
    user-select: none;
    transition: all 0.15s;
}
.mmc-status-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.mmc-status-toggle label:nth-of-type(1):has(input:checked) {
    background: rgba(76,175,80,0.12); border-color: #4CAF50; color: #4CAF50;
}
.mmc-status-toggle label:nth-of-type(2):has(input:checked) {
    background: rgba(220,53,69,0.12); border-color: #dc3545; color: #dc3545;
}

/* Standards — chip checklist */
.mmc-standards-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.mmc-standards-chips label {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px 6px 10px;
    border-radius: 6px;
    border: 1.5px solid #d8d8d8;
    font-size: 12.5px;
    font-weight: 600;
    color: #666;
    cursor: pointer;
    user-select: none;
    transition: all 0.15s;
}
.mmc-standards-chips label:has(input:checked) {
    background: #8B0000;
    border-color: #8B0000;
    color: #fff;
}
.mmc-standards-chips input {
    accent-color: #8B0000;
    width: 14px;
    height: 14px;
    margin: 0 8px 0 0;
    vertical-align: middle;
}


/* ══════════════════════════════════════════════════════════════════════════
   CONTACT LIST — RESPONSIVE
══════════════════════════════════════════════════════════════════════════ */

/* Ensure table container never overflows the viewport */
#cl-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Tooltip-style email cells: browser native title shows on hover */
#cl-table-wrap td[title] { cursor: default; }

/* ── Tablet (≤ 1024px) ────────────────────────────────────────────────── */
@media (max-width: 1024px) {
    /* Filter bar: wrap onto 2 rows */
    #cl-table-wrap ~ * { /* pagination */ }
}

/* ── Mobile / small tablet (≤ 768px) ─────────────────────────────────── */
@media (max-width: 768px) {

    /* Header title */
    div[style*="Pre-defined"] { font-size: 17px !important; }

    /* Filter bar — stack vertically */
    .cl-filter-bar {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 8px !important;
    }
    .cl-filter-bar > div {
        margin-right: 0 !important;
        min-width: unset !important;
    }

    /* Badges — wrap */
    #cl-badges { flex-wrap: wrap; gap: 6px; }

    /* Page padding */
    #cl-table-wrap {
        padding: 0 12px !important;
    }

    /* Bottom bar */
    .bottom-bar {
        padding: 8px 16px !important;
    }

    /* Modal — make full-width on small screens */
    .modal-xl { max-width: 98vw !important; margin: 4px auto !important; }
    .modal-body { padding: 14px !important; }

    /* Modal inner layout — stack left/right panels */
    .modal-body > div > div {
        flex-direction: column !important;
    }
    .modal-body > div > div > div:first-child {
        padding-right: 0 !important;
        border-right: none !important;
        border-bottom: 1px solid #f0f0f0;
        padding-bottom: 16px;
        margin-bottom: 16px;
        flex: unset !important;
    }
    .modal-body > div > div > div:last-child {
        padding-left: 0 !important;
        flex: unset !important;
    }

    /* Make role panel site list scroll nicely */
    .modal-body [style*="maxHeight"] {
        max-height: 200px !important;
    }

    /* Pagination — smaller buttons */
    #cl-pagination-row { padding: 8px 12px !important; }
    #cl-pagination-row > div {
        padding: 3px 8px !important;
        font-size: 11px !important;
    }
}

/* ── Very small (≤ 480px) ─────────────────────────────────────────────── */
@media (max-width: 480px) {
    .modal-xl { max-width: 100vw !important; margin: 0 !important; border-radius: 0 !important; }
    .modal-content { border-radius: 0 !important; }
}

/* Sticky column shadow when table is scrolled */
#cl-table-wrap table th[style*="sticky"],
#cl-table-wrap table td[style*="sticky"] {
    box-shadow: 2px 0 4px rgba(0,0,0,0.06);
}
/* Viewer has view-only access.  The backend independently rejects every
   non-read request; these rules prevent editing controls from being usable
   when a Viewer reaches a detail URL directly. */
body.viewer-readonly input,
body.viewer-readonly textarea,
body.viewer-readonly select,
body.viewer-readonly [contenteditable="true"] {
  pointer-events: none !important;
  opacity: 0.65 !important;
}

body.viewer-readonly [id$="-save"],
body.viewer-readonly [id*="-save-"],
body.viewer-readonly [id$="-submit"],
body.viewer-readonly [id*="-submit-"],
body.viewer-readonly button[type="submit"] {
  display: none !important;
}

/* Quill font-size picker: the stock theme only names small / large / huge, so the point sizes of the CSIRT
   editor (and the unset default) all showed up as "Normal". Name each one, and show it at its own size. */
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="10pt"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="10pt"]::before { content: "10 pt"; }
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="10pt"]::before { font-size: 10pt; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="11pt"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="11pt"]::before { content: "11 pt"; }
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="11pt"]::before { font-size: 11pt; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12pt"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12pt"]::before { content: "12 pt"; }
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12pt"]::before { font-size: 12pt; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14pt"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14pt"]::before { content: "14 pt"; }
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14pt"]::before { font-size: 14pt; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16pt"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16pt"]::before { content: "16 pt"; }
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16pt"]::before { font-size: 16pt; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18pt"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18pt"]::before { content: "18 pt"; }
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18pt"]::before { font-size: 18pt; }
.ql-snow .ql-picker.ql-size { width: 80px; }
