/* ════════════════════════════════════════════════════════════════════════════
   editor-desktop-canva.css — NÂNG CẤP GIAO DIỆN DESKTOP KIỂU CANVA
   ----------------------------------------------------------------------------
   AN TOÀN TUYỆT ĐỐI:
   • TOÀN BỘ file nằm trong @media (min-width:1024px) → KHÔNG đụng 1 pixel nào
     của giao diện Mobile (bottom nav, thanh nổi, bảng trượt) đã chốt trước đó.
   • Mọi class mới mang tiền tố `dc-` → không đá CSS cũ (~2900 dòng) và không đá
     bộ `adv-` đã làm.
   • KHÔNG đổi cấu trúc shell (.ed-left-corner / .editor-main-content /
     .editor-workspace) → giữ nguyên zoom-engine, canvas sizing, luồng in PET.

   Kiến trúc drawer (rail + panel + nút ‹) ĐÃ CÓ SẴN trong dự án (ui-rail.js).
   File này chỉ: khoác áo Canva + thêm Top Toolbar + Context Toolbar + tab mới.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── MẶC ĐỊNH: ẨN HẲN mọi thành phần desktop (quy tắc này nằm NGOÀI @media) ──
   Bắt buộc phải có: nếu chỉ khai báo trong @media(min-width:1024px) thì ở màn nhỏ
   các <div> này không có luật nào → hiện mặc định (display:block) và phá mobile.
   Trong @media desktop bên dưới sẽ bật lại (đặt sau nên thắng). */
.dc-ctx { display: none; }

/* Mobile/tablet: ẩn 2 tab Vị trí + Hiệu ứng (đã có ở THANH NỔI #advTopBar + sheet
   khi chọn vật thể → tránh trùng). RIÊNG "Thành phần" (shapes) GIỮ LẠI trên mobile:
   thêm hình khối là chức năng KHÔNG có đường nào khác trên mobile (C6). Nút shapes
   được mobile-shapes.js bind (desktop-canva.js chỉ chạy ≥1024).
   LƯU Ý specificity: home.blade.php có `.editor-embed .ed-panel-section{display:block!important}`
   (0,2,0) và nằm SAU file này → phải viết `.editor-embed ...` (0,3,0) mới thắng được. */
@media (max-width: 1023.98px) {
    .editor-embed .ed-rail-btn[data-panel="effects"],
    .editor-embed .ed-rail-btn[data-panel="arrange"],
    .editor-embed .ed-panel-section[data-panel="effects"],
    .editor-embed .ed-panel-section[data-panel="arrange"] { display: none !important; }
}

@media (min-width: 1024px) {

    .dc-ui {
        --dc-brand: var(--brand, #0056b3);
        --dc-brand-soft: #EFF4FB;
        --dc-ink: #0F172A;
        --dc-ink-soft: #475569;
        --dc-muted: #94A3B8;
        --dc-line: #E7E9EF;
        --dc-hover: #F1F5F9;
        --dc-radius: 10px;
        font-family: 'Plus Jakarta Sans', system-ui, -apple-system, "Segoe UI", sans-serif;
    }

    /* Nút icon dùng chung */
    .dc-btn {
        display: inline-flex; align-items: center; justify-content: center; gap: 6px;
        height: 34px; min-width: 34px; padding: 0 8px; margin: 0;
        border: none; background: transparent; color: var(--dc-ink-soft);
        border-radius: var(--r-sm, 8px); cursor: pointer; font-size: 13px; font-weight: 600;
        -webkit-appearance: none; appearance: none; white-space: nowrap;
        transition: background-color .15s ease, color .15s ease, transform .1s ease;
    }
    .dc-btn:hover:not(:disabled) { background: var(--dc-hover); color: var(--dc-ink); }
    .dc-btn:active:not(:disabled) { transform: scale(.96); }
    .dc-btn:disabled { color: #CBD5E1; cursor: default; }
    .dc-btn svg { width: 18px; height: 18px; flex: none; }
    .dc-btn.is-primary { background: var(--dc-brand); color: #fff; padding: 0 16px; }
    .dc-btn.is-primary:hover { background: var(--brand-dark, #004494); color: #fff; }
    .dc-btn.is-ghost { border: 1px solid var(--dc-line); background: #fff; }
    .dc-btn.is-ghost:hover { background: var(--dc-hover); }
    .dc-btn.is-on { background: var(--dc-brand-soft); color: var(--dc-brand); }

    .dc-sep { width: 1px; height: 22px; background: var(--dc-line); flex: none; margin: 0 4px; }

    /* ══════════════ CONTEXT TOOLBAR (đổi theo đối tượng đang chọn) ══════════════ */
    .dc-ctx {
        display: none; align-items: center; gap: 4px; flex-wrap: wrap;
        min-height: 46px; flex: none; padding: 6px 14px;
        background: #fff; border-bottom: 1px solid var(--dc-line);
        position: relative; z-index: 39;
    }
    .dc-ctx.is-on { display: flex; }

    /* ══ THANH CÔNG CỤ NỔI KIỂU CANVA ══
       JS (desktop-canva.js) chuyển 3 thanh vào trong `.editor-workspace` → thanh
       chỉ rộng trong phạm vi canvas, không phủ sang cột mua hàng bên phải.

       NỔI ĐÈ (absolute), KHÔNG chiếm chỗ trong luồng: hiện/ẩn thanh thì áo, nút
       Hoàn tác, Mặt trước/sau, Chỉnh sửa/Xem trước đều ĐỨNG YÊN — không bị đẩy
       tụt xuống rồi nảy lên. Absolute này neo trong `.editor-workspace` (vốn đã
       position:relative + overflow:hidden) nên vẫn nằm gọn trong khung Editor,
       KHÔNG tràn ra phá web gốc.

       width:auto → CO THEO NỘI DUNG, không dàn hết ngang, không dính vào header. */
    .editor-workspace > .dc-ctx {
        position: absolute;
        top: 62px;                                /* ngay DƯỚI hàng nút nổi sẵn có */
        /* Căn giữa bằng left/right 0 + margin auto, KHÔNG dùng left:50%+translate:
           với absolute, `left:50%` cắt không gian khả dụng còn đúng NỬA khung nên
           thanh bị ép xuống 2 dòng. Đặt cả left lẫn right = 0 thì nó được tính trên
           TRỌN bề rộng, `width:max-content` mới giữ được 1 hàng. */
        left: 0;
        right: 0;
        margin: 0 auto;
        z-index: 71;
        width: max-content;
        /* Khách chốt: DESKTOP để thanh trên 1 DÒNG (không bó 430 → 2 dòng nữa).
           nowrap giữ 1 hàng; cap 100%-24px để không tràn khung. Màn desktop hẹp mà
           thanh dài hơn khung thì CUỘN NGANG (overflow-x:auto) thay vì wrap/cắt. */
        max-width: calc(100% - 24px);
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        padding: 5px 8px;
        gap: 3px;
        border: 1px solid var(--dc-line);
        border-radius: var(--r-md, 12px);
        box-shadow: 0 6px 20px rgba(15, 23, 42, .10);
    }

    /* Thanh nằm ở 62px nên hàng nút nổi (14px) KHÔNG phải nhúc nhích.
       Chỉ thẻ cảnh báo tràn vùng in ở 64px là trùng chỗ → đẩy riêng nó xuống dưới thanh.
       (#dpiBadge đã gỡ hẳn — không cảnh báo phân giải thấp nữa.)
       --dc-ctx-h do JS đo bằng offsetHeight (đơn vị CSS px, KHÔNG dính zoom .9 của
       body.design) → thanh có xuống dòng cũng vẫn đúng, không phải đoán số cứng. */
    .editor-workspace.dc-has-ctx #printOverflowWarn { top: calc(70px + var(--dc-ctx-h, 0px)); }

    /* ══ "Sắp xếp & Căn chỉnh": bỏ khỏi cột phải, gộp vào thanh nổi ══
       Ô này ở cột phải hiện/ẩn theo trạng thái chọn nên cứ bấm vào hình là đẩy
       Lớp Thiết Kế / Bản nháp / Mẫu tụt xuống. JS đã bê 4 nút GỐC sang thanh nổi
       (không nhân bản), nên ở đây chỉ cần ẩn cái vỏ rỗng còn lại.
       arrange-engine.js đặt display bằng style inline → phải !important mới thắng. */
    .editor-embed #arrange-properties-panel { display: none !important; }

    /* 4 nút đó vốn là `flex:1 1 0` cho vừa cột phải → vào thanh phải co lại vuông */
    .dc-arr { display: inline-flex; align-items: center; gap: 3px; }
    .editor-embed .dc-ctx .arrange-btn {
        flex: 0 0 auto !important;
        width: 34px; height: 34px; padding: 0;
        border-radius: var(--r-sm, 8px);
        border: 1px solid var(--dc-line);
        background: #fff; color: var(--dc-ink-soft);
        font-size: 16px;
    }
    .editor-embed .dc-ctx .arrange-btn:hover { background: var(--dc-hover); color: var(--dc-brand); }

    /* Thêm 4 nút Sắp xếp làm thanh CHỮ dài quá (835px > 792px) và bị xuống 2 dòng.
       Bỏ chữ ở nút Khoảng cách, để icon không — đúng như Canva (chỉ Hiệu ứng /
       Chuyển động / Vị trí mới có chữ). Tiết kiệm ~85px, gọn về 1 hàng. */
    .editor-embed .dc-ctx #dcSpacingBtn span { display: none; }
    .editor-embed .dc-ctx #dcSpacingBtn { padding: 0; width: 34px; }

    /* Ô chọn font + tìm kiếm */
    .dc-font { position: relative; }
    .dc-font-btn {
        display: inline-flex; align-items: center; gap: 8px; justify-content: space-between;
        width: 168px; height: 34px; padding: 0 10px;
        border: 1px solid var(--dc-line); border-radius: var(--r-sm, 8px); background: #fff;
        color: var(--dc-ink); font-size: 13px; font-weight: 600; cursor: pointer;
        -webkit-appearance: none; appearance: none;
    }
    .dc-font-btn:hover { background: var(--dc-hover); }
    .dc-font-btn span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .dc-font-pop {
        display: none; position: absolute; top: calc(100% + 6px); left: 0; z-index: 60;
        width: 250px; max-height: 320px; overflow: hidden;
        background: #fff; border: 1px solid var(--dc-line); border-radius: var(--r-md, 12px);
        box-shadow: 0 12px 32px rgba(15, 23, 42, .14);
        flex-direction: column;
    }
    .dc-font-pop.is-on { display: flex; }
    .dc-font-search {
        flex: none; margin: 8px; padding: 8px 10px;
        border: 1px solid var(--dc-line); border-radius: var(--r-sm, 8px);
        font-size: 13px; outline: none;
    }
    .dc-font-search:focus { border-color: var(--dc-brand); box-shadow: 0 0 0 3px rgba(0, 86, 179, .12); }
    .dc-font-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 0 6px 8px; }
    .dc-font-item {
        display: block; width: 100%; padding: 9px 10px; margin: 0;
        border: none; background: transparent; border-radius: var(--r-sm, 8px);
        text-align: left; font-size: 15px; color: var(--dc-ink); cursor: pointer;
    }
    .dc-font-item:hover { background: var(--dc-hover); }
    .dc-font-item.is-on { background: var(--dc-brand-soft); color: var(--dc-brand); }

    /* ══ Cụm tăng/giảm cỡ chữ ══
       CHIỀU CAO PHẢI LÀ 32px CHO RUỘT, 34px CHO CẢ CỤM (32 + 2 viền 1px).
       Trước đây ruột 32px nhưng cụm lại thành 34.2px vì hộp cha tính cả viền →
       cụm cao hơn mọi nút bên cạnh 0.2px và tụt xuống 1px, đo được:
         .dc-btn      top 134.2  cao 34.0
         .dc-num      top 134.1  cao 34.2   ← lệch
         nút − và +   top 135.2  cao 32.0   ← chữ − + tụt 1px so với B I U S
       Nay ép box-sizing + height cho cả cụm để tổng đúng 34.0px. */
    .dc-num {
        display: inline-flex; align-items: center; box-sizing: border-box; height: 34px;
        border: 1px solid var(--dc-line); border-radius: var(--r-sm, 8px); overflow: hidden; background: #fff;
    }
    /* flex-centre thay vì căn chữ mặc định của <button>: dấu − (U+2212) và + có
       chiều cao khác nhau, để trình duyệt tự căn là mỗi dấu nằm một cao độ. */
    .dc-num button {
        display: inline-flex; align-items: center; justify-content: center;
        width: 30px; height: 32px; padding: 0; border: none; background: transparent;
        color: var(--dc-ink-soft); cursor: pointer; font-size: 16px; line-height: 1;
    }
    .dc-num button svg { width: 15px; height: 15px; display: block; }
    .dc-num button:hover { background: var(--dc-hover); color: var(--dc-brand); }
    .dc-num input {
        width: 44px; height: 32px; border: none; outline: none; text-align: center;
        font-size: 13px; font-weight: 700; color: var(--dc-ink); line-height: 32px;
        border-left: 1px solid var(--dc-line); border-right: 1px solid var(--dc-line);
        font-variant-numeric: tabular-nums;
    }
    .dc-num input::-webkit-outer-spin-button,
    .dc-num input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

    /* ══ B · I · U · S — MỘT khuôn duy nhất ══
       Trước đây 4 nút này viết style inline ngay trong HTML, mỗi nút một kiểu:
       chữ I dùng Georgia serif còn 3 nút kia dùng Plus Jakarta, lại để
       line-height mặc định (22.5px) nên tâm chữ rơi ở 150.5 trong khi tâm hàng
       là 151.2. Nay gom về class chung: cùng font, cùng cỡ, line-height 1 và
       để flex của .dc-btn căn giữa → 4 chữ cùng một cao độ, không thể lệch. */
    .dc-tt { display: block; font-size: 15px; line-height: 1; font-family: inherit; }
    .dc-tt-b { font-weight: 800; }
    .dc-tt-i { font-style: italic; font-weight: 700; font-family: Georgia, "Times New Roman", serif; }
    .dc-tt-u { text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1.5px; }
    .dc-tt-s { text-decoration: line-through; text-decoration-thickness: 1.5px; }

    /* Nút MÀU CHỮ kiểu Canva: chữ A + vạch màu bên dưới.
       <input type="color"> mặc định của trình duyệt trắng-trơn trên nền trắng
       → nhìn như ô rỗng bị lỗi. Ở đây ẩn nó đi (opacity 0) và vẽ lại bằng CSS. */
    /* CHỮ "A" PHẢI CĂN GIỮA NÚT NHƯ B I U S.
       Lỗi cũ: nút xếp CỘT (A ở trên, vạch màu ở dưới) rồi căn giữa CẢ CỘT —
       nghĩa là cái được căn giữa là "A + vạch", còn riêng chữ A thì bị đẩy lên.
       Đo được: tâm chữ A ở 147.9 trong khi tâm B I U S ở 150.5, lệch 2.6px —
       đúng chỗ khách nhìn ra "B I U S cũng lệch".
       Nay: A căn giữa tuyệt đối trong 34px, vạch màu tách ra position:absolute
       nằm sát đáy → nó không còn tham gia phép căn giữa nữa. */
    .dc-colorbtn {
        position: relative; flex: none; margin: 0;
        width: 34px; height: 34px; border-radius: var(--r-sm, 8px);
        display: inline-flex; align-items: center; justify-content: center;
        cursor: pointer; transition: background-color .15s ease;
    }
    .dc-colorbtn:hover { background: var(--dc-hover); }
    .dc-colorbtn-a {
        font-size: 15px; font-weight: 800; line-height: 1; color: var(--dc-ink);
    }
    .dc-colorbtn-bar {
        position: absolute; left: 50%; bottom: 5px; transform: translateX(-50%);
        width: 18px; height: 4px; border-radius: var(--r-pill, 999px);
        background: #ffffff; box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .22);
    }
    .dc-color {
        position: absolute; inset: 0; width: 100%; height: 100%;
        opacity: 0; cursor: pointer; border: none; padding: 0; margin: 0;
        -webkit-appearance: none; appearance: none;
    }

    /* NÚT MÀU CÓ NHÃN — dùng cho thanh Hình khối (Màu nền / Màu viền).
       BẮT BUỘC position:relative: `.dc-color` bên trong là absolute inset:0,
       thiếu mốc này nó bám lên cả thanh công cụ và nuốt sạch mọi cú bấm
       (đo được: 1059×81px phủ kín #dcCtxShape). Bọc đúng thì nó chỉ phủ
       34px chiều cao của chính nút này.
       Ô màu vẽ bằng span nên xem được cả màu trắng (có vòng viền inset). */
    .dc-swatch {
        position: relative; flex: none; margin: 0;
        display: inline-flex; align-items: center; gap: 8px;
        height: 34px; padding: 0 10px 0 8px; border-radius: var(--r-sm, 8px);
        cursor: pointer; transition: background-color .15s ease;
    }
    .dc-swatch:hover { background: var(--dc-hover); }
    .dc-swatch:active { transform: scale(.96); }
    .dc-swatch-chip {
        width: 18px; height: 18px; border-radius: var(--r-xs, 6px); flex: none;
        background: #0056b3; box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .22);
    }
    .dc-swatch-txt {
        font-size: 12.5px; font-weight: 600; color: var(--dc-ink-soft);
        white-space: nowrap;
    }

    /* Popover CĂN LỀ — gom 4 nút vào 1 (giống Canva).
       .dc-pop.is-on là display:block nên phải ghi đè thành flex cho hàng ngang. */
    .dc-pop.dc-pop-align { width: auto; padding: 4px; left: 0; right: auto; }
    .dc-pop.dc-pop-align.is-on { display: flex; flex-direction: row; gap: 2px; }

    /* Nút "Vị trí" (gộp căn chỉnh) + bảng xổ 6 hướng. Bấm hộ advAlign* nên chỉ là GIAO DIỆN. */
    .dc-pos-btn .dc-pos-caret { font-size: 12px; opacity: .65; margin-left: -2px; }
    .dc-pop.dc-pop-pos { width: max-content; min-width: 150px; padding: 6px; left: 0; right: auto; }
    .dc-pos-opt {
        display: flex; align-items: center; gap: 10px; width: 100%;
        padding: 8px 10px; border: 0; background: transparent; border-radius: var(--r-sm, 8px);
        font: inherit; font-size: 14px; color: var(--dc-ink, #1e293b);
        text-align: left; white-space: nowrap; cursor: pointer;
    }
    .dc-pos-opt:hover { background: var(--dc-hover, #f1f5f9); color: var(--dc-brand, #0056b3); }
    .dc-pos-opt:active { transform: scale(.98); }
    .dc-pos-opt i { font-size: 17px; flex: none; }

    /* Popover khoảng cách chữ/dòng (giống Canva) */
    .dc-pop-wrap { position: relative; }
    .dc-pop {
        display: none; position: absolute; top: calc(100% + 6px); right: 0; z-index: 60;
        /* 290px chứ không phải 260: nhãn dài nhất ("Khoảng cách dòng") đo được cần ~112px,
           cộng 2 khoảng cách 10, ô số 44 và thanh trượt tối thiểu 60 → ruột 236px,
           cộng padding 28 là 264. Lấy 290 cho thanh trượt còn chỗ kéo cho đã tay. */
        width: 290px; padding: 14px;
        background: #fff; border: 1px solid var(--dc-line); border-radius: var(--r-md, 12px);
        box-shadow: 0 12px 32px rgba(15, 23, 42, .14);
    }
    .dc-pop.is-on { display: block; }
    .dc-pop-row { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
    .dc-pop-row:last-child { margin-bottom: 0; }
    /* KHÔNG khoá cứng 96px nữa: "Khoảng cách dòng" dài hơn ô nên bị bẻ làm 2 dòng →
       hàng đó cao 34px trong khi hàng trên 17px, nhìn so le. nowrap + để nó tự nới. */
    .dc-pop-name {
        flex: 0 0 auto; min-width: 96px; white-space: nowrap;
        font-size: 12.5px; font-weight: 600; color: var(--dc-ink-soft);
    }
    /* Ô số cạnh thanh kéo — PHẢI khớp từng số với `.adv-row-val`
       (css/editor-advanced.css). Xem docs/UI-STANDARD.md §8.2.
       Căn giữa bằng inline-flex chứ KHÔNG bằng text-align: <output> là thẻ
       inline, khi làm con của flex nó bị blockify, chữ bám mép trên hộp 28px
       nên nhìn cao hơn ô bên bảng Hiệu ứng dù cùng kích thước. */
    .dc-pop-val {
        flex: 0 0 44px; height: 28px; box-sizing: border-box;
        display: inline-flex; align-items: center; justify-content: center;
        /* padding/margin PHẢI ghi rõ 0: có một luật cũ trong ~2900 dòng CSS gốc
           bắn `padding-top:7px` vào thẻ này, đo được số bên trong tụt 3.5px so
           với ô cùng loại ở bảng Hiệu ứng. */
        padding: 0; margin: 0; line-height: 1;
        border: 1px solid var(--dc-line); border-radius: var(--r-sm, 8px); outline: none;
        font-size: 12.5px; font-weight: 700; color: var(--dc-ink);
        font-variant-numeric: tabular-nums;
    }
    /* .dc-range KHÔNG khai báo ở đây nữa.
       Kiểu dáng thanh kéo gom về MỘT chỗ duy nhất: css/editor-advanced.css,
       khối "THANH KÉO CHUẨN CỦA TOÀN BỘ EDITOR" (quy cách chép ở
       docs/UI-STANDARD.md §8). Để hai file cùng khai báo là kiểu gì cũng có
       ngày lệch nhau — đã lệch thật một lần rồi. */

    /* ══════════════ 3) DRAWER: tab Văn bản & Thành phần ══════════════ */
    /* (Đã gỡ .dc-text-btn — cụm "Thêm nhanh" 3 nút trong tab Văn bản bỏ rồi.) */

    /* Lưới hình khối — 3 cột cho ô to, dễ nhìn (4 cột thì icon bé không nhận ra hình gì).
       LƯU Ý: nút <button> có aspect-ratio KHÔNG tự giãn hết ô lưới (đo được 28px/58px),
       nên phải ép width:100%. Và svg dùng height:auto — height:100% sẽ sập về 5.7px
       vì chiều cao cha do aspect-ratio sinh ra là "không xác định". */
    .dc-shape-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
    /* Ô KHOÁ CHIỀU CAO CỨNG 76px, KHÔNG dùng aspect-ratio.
       Đo được: với `aspect-ratio: 1/1` ô ra 78.3 × 42.2px — DẸT chứ không vuông.
       Chrome bỏ qua aspect-ratio trên <button> (nút có cơ chế dựng hộp riêng),
       nên chiều cao rơi về "vừa nội dung"… mà nội dung lại tính ra 0.22px vì svg
       để height:auto. Kết quả: hình 36px tràn hẳn ra ngoài ô 42px, nhìn như một
       vệt ngang bị cắt cụt — đúng cái khách chụp ở hình 4.
       Đặt height + cỡ svg bằng số cố định thì không phụ thuộc cơ chế nào cả. */
    .dc-shape {
        display: flex; align-items: center; justify-content: center;
        width: 100%; height: 76px; padding: 0;
        border: 1px solid var(--dc-line); border-radius: var(--r-md, 12px); background: #fff;
        color: #64748B; cursor: pointer;
        transition: background-color .15s ease, border-color .15s ease, transform .1s ease;
    }
    /* HOVER CHỈ ĐỔI NỀN, KHÔNG ĐỔI MÀU HÌNH.
       Lỗi cũ: hover tô nền xanh nhạt #EFF4FB ĐỒNG THỜI đổi hình sang xanh đậm.
       Hình khối ở đây là mảng đặc chiếm gần trọn ô, nên xanh-trên-xanh thành ra
       một mảng loang không rõ là hình gì — đúng cái khách kêu "hover cũng kì".
       Theo quy tắc chung của dự án: hover chỉ đổi NỀN, nội dung giữ nguyên. */
    .dc-shape:hover { background: var(--dc-hover); border-color: #CBD5E1; }
    .dc-shape:active { transform: scale(.94); }
    .dc-shape svg { width: 34px; height: 34px; display: block; flex: none; }

    /* Danh sách font trong drawer */
    .dc-drawer-fonts { max-height: 260px; overflow-y: auto; margin-top: 6px; }

    /* ══════════════ 4) HIỆU ỨNG: chuyển từ thả nổi bên PHẢI → vào DRAWER trái ══════════════
       Trả lại 100% không gian bên phải cho khung áo. Bảng `.adv-sheet#advSheetEffects`
       được JS chuyển vào trong drawer; ở đây gỡ hết định vị fixed/bóng/bo góc của nó. */
    .ed-panel-body #advSheetEffects,
    .ed-panel-section #advSheetEffects {
        position: static !important;
        width: auto !important; max-height: none !important;
        transform: none !important; opacity: 1 !important; visibility: visible !important;
        border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
        background: transparent !important;
        display: block !important;
    }
    .ed-panel-body #advSheetEffects .adv-sheet-head { display: none !important; }
    .ed-panel-body #advSheetEffects .adv-sheet-body { padding: 0 !important; overflow: visible !important; }

    /* Drawer phải cuộn mượt, không tràn màn hình */
    .ed-panel-body { overflow-y: auto; scroll-behavior: smooth; overscroll-behavior: contain; }
    .ed-panel-body::-webkit-scrollbar { width: 8px; }
    .ed-panel-body::-webkit-scrollbar-thumb { background: #DDE3EC; border-radius: var(--r-pill, 999px); }
    .ed-panel-body::-webkit-scrollbar-thumb:hover { background: #C7D0DD; }
    .ed-panel-body::-webkit-scrollbar-track { background: transparent; }

    /* ══════════════ 5) Dọn trùng lặp + KHÓA mọi thứ vào trong khung Editor ══════════════ */
    /* Top bar cũ (bộ `adv-`) đã được Top Toolbar mới thay thế → ẩn để khỏi 2 thanh */
    .adv-topbar { display: none !important; }
    .adv-backdrop { display: none !important; }

    /* Thanh công cụ đáy của MOBILE → tắt hẳn trên desktop (yêu cầu #2) */
    .mobile-bottom-nav { display: none !important; }

    /* Undo/Redo: dùng lại cặp pill gốc (.ed-history) — KHÔNG ẩn, không nhân bản. */

    /* ══ KHÔNG CÒN `position: fixed` TRÀN MÀN HÌNH ══
       3 bảng Lớp / Căn chỉnh / Hiệu ứng đều được JS chuyển vào DRAWER trái.
       Ở đây gỡ sạch định vị fixed để chúng chảy theo layout của drawer,
       tuyệt đối không đè lên cột thông tin bên phải. */
    .ed-panel-body #advSheetLayers,
    .ed-panel-body #advSheetAlign,
    .ed-panel-body #advSheetEffects,
    .ed-panel-section #advSheetLayers,
    .ed-panel-section #advSheetAlign,
    .ed-panel-section #advSheetEffects {
        position: static !important;
        inset: auto !important;
        width: auto !important; max-height: none !important;
        transform: none !important; opacity: 1 !important; visibility: visible !important;
        border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
        background: transparent !important; display: block !important;
    }
    .ed-panel-body #advSheetLayers .adv-sheet-head,
    .ed-panel-body #advSheetAlign .adv-sheet-head { display: none !important; }
    .ed-panel-body #advSheetLayers .adv-sheet-body,
    .ed-panel-body #advSheetAlign .adv-sheet-body { padding: 0 !important; overflow: visible !important; }

    /* Thanh nổi bám vật thể: chặn không cho tràn sang cột phải */
    .adv-float { max-width: 220px; }

    /* Nhãn nhóm nhỏ trong drawer */
    .dc-label {
        display: block; margin: 16px 0 8px;
        font-size: 11px; font-weight: 700; letter-spacing: .6px;
        color: var(--dc-muted); text-transform: uppercase;
    }
    .dc-label:first-child { margin-top: 0; }
    .dc-hint { margin: 10px 0 0; font-size: 11.5px; line-height: 1.6; color: var(--dc-muted); }
}

/* Tôn trọng người dùng tắt hiệu ứng chuyển động */
@media (min-width: 1024px) and (prefers-reduced-motion: reduce) {
    .dc-btn, .dc-shape { transition: none; }
}
