

/* =====================================================================
   InQueue brand override, Coral #FF5A3C, Ink #15171C, Muted #8C887F, Linen #EDEAE3
   ===================================================================== */
:root{
    /* Canonical InQueue brand tokens (CLAUDE.md §2), the single source of
       truth for the palette. New components use these; --ot-* / --bs-* below
       remain the theme/Bootstrap aliases the framework needs. */
    --color-ink: #15171C;      /* primary text, dark bars/bands */
    --color-coral: #FF5A3C;    /* save/confirm/primary, accents, active */
    --color-coral-rgb: 255, 90, 60; /* for rgba() coral tints */
    --color-cancel: #FFFFFF;   /* cancel/secondary buttons (with visible border) */
    --color-danger: #C0392B;   /* the one and only destructive red */
    --color-stone: #8C887F;    /* muted text, the logo figures */
    --color-linen: #EDEAE3;    /* page background, canonical 4th palette color (mirrors --body-bg) */

    --ot-primary: #FF5A3C;
    --ot-primary-rgb: 255, 90, 60;
    --ot-primary-btn: #FF5A3C;
    --ot-primary-border: #E2DED6;
    --ot-bg-primary: #F7F5F1;
    --body-bg: #EDEAE3;
    --ot-primary-title: #15171C;
    --bs-primary: #FF5A3C;
    --bs-primary-rgb: 255, 90, 60;
    --bs-link-color: #FF5A3C;
    --bs-link-hover-color: #FF5A3C;
}

:root{
    /* Full design tokens — THE place to retheme the platform (exact legacy values). */
    --iq-coral:#FF5A3C;
    --iq-coral-tint:#FAECE7;
    --iq-coral-tint2:#FDECE7;
    --iq-ink:#15171C;
    --iq-ink2:#5B5852;
    --iq-muted:#8C887F;
    --iq-muted2:#B4B0A8;
    --iq-border:#E7E3DB;
    --iq-line:#F2EEE7;
    --iq-line2:#F0ECE5;
    --iq-soft:#F6F4F0;
    --iq-paper:#FBFAF8;
    --iq-cream:#F7F5F1;
    --iq-bg:#EFEBE3;
    --iq-linen:#EDEAE3;
    --iq-green:#3B8C5A;
    --iq-green-tint:#EAF3EC;
    --iq-ok:#12855F;
    --iq-ok-tint:#E1F5EE;
    --iq-red:#C0472F;
    --iq-red-tint:#FBEAEA;
    --iq-danger:#B43A3A;
    --iq-danger2:#A32D2D;
    --iq-blue:#3B6FB0;
    --iq-blue-tint:#E9F0F8;
    --iq-amber:#C9A227;
    --iq-amber-ink:#8A6D14;
    --iq-amber-tint:#F7F1DC;
    --iq-violet:#7A5CC0;
    --iq-violet-tint:#EFEAF8;
    --iq-mut:var(--iq-muted); --iq-bd:var(--iq-border);
}

.btn-primary-fill,
.btn-primary-fill:focus,
.btn-primary-fill:active{ color: var(--iq-ink) !important; }
.btn-primary-fill:hover{ color: var(--iq-ink) !important; filter: brightness(.96); }
.btn-primary-fill svg,
.btn-primary-fill i{ color: var(--iq-ink) !important; }
.text-danger-soft{ color: var(--iq-coral) !important; }

/* =====================================================================
   Button standardization, mirror the QUEUE page buttons exactly.
   Queue uses: .btn ~34px tall, 11px radius, 9px 15px padding, 13.5px/600;
   coral = solid coral w/ WHITE text; light/cancel = white w/ border + ink.
   Re-targets the bespoke per-page button families so every page matches
   Queue without editing each view.
   ===================================================================== */
.csv-btn, .svx-btn, .cfg-btn, .csx-btn, .bx-btn, .dpx-btn, .btn-coral{
    display:inline-flex !important; align-items:center; justify-content:center; gap:7px;
    padding:9px 15px !important; height:auto !important; min-height:0 !important;
    border-radius:11px !important; font-size:13.5px !important; font-weight:600 !important;
    box-shadow:none !important; text-transform:none; border:1px solid transparent !important;
}
.csv-btn i, .svx-btn i, .cfg-btn i, .csx-btn i, .bx-btn i, .dpx-btn i, .btn-coral i,
.csv-btn svg, .svx-btn svg, .cfg-btn svg, .csx-btn svg, .bx-btn svg, .dpx-btn svg, .btn-coral svg{ width:16px !important; height:16px !important; }
/* Save / Create / primary = coral bg, WHITE text (like Queue .btn-coral) */
.csv-btn.primary, .svx-btn.primary, .cfg-btn.primary, .csx-btn.primary, .bx-btn.primary, .dpx-btn.primary, .btn-coral{
    background:var(--ot-primary) !important; color:#fff !important;
}
.csv-btn.primary:hover, .svx-btn.primary:hover, .cfg-btn.primary:hover, .csx-btn.primary:hover, .bx-btn.primary:hover, .dpx-btn.primary:hover, .btn-coral:hover{
    filter:brightness(.96); color:#fff !important;
}
.csv-btn.primary i, .svx-btn.primary i, .cfg-btn.primary i, .csx-btn.primary i, .bx-btn.primary i, .dpx-btn.primary i, .btn-coral i,
.csv-btn.primary svg, .svx-btn.primary svg, .cfg-btn.primary svg, .csx-btn.primary svg, .bx-btn.primary svg, .dpx-btn.primary svg, .btn-coral svg{ color:#fff !important; }
/* Cancel / ghost / light = white bg, border, ink text (like Queue .btn-light) */
.csv-btn.ghost, .svx-btn.ghost, .cfg-btn.ghost, .csx-btn.ghost, .bx-btn.ghost, .dpx-btn.ghost{
    background:#fff !important; border:1px solid var(--iq-border) !important; color:var(--iq-ink) !important;
}
.csv-btn.ghost:hover, .svx-btn.ghost:hover, .cfg-btn.ghost:hover, .csx-btn.ghost:hover, .bx-btn.ghost:hover, .dpx-btn.ghost:hover{
    background:var(--iq-paper) !important; border-color:#C9C3B8 !important; color:var(--iq-ink) !important;
}
/* Shared theme cancel button → white/ink, Queue radius */
.btn-cancel-soft-fill, .btn-cancel-soft-fill:focus, .btn-cancel-soft-fill:active{
    background:#fff !important; border:1px solid var(--iq-border) !important; color:var(--iq-ink) !important; border-radius:11px !important;
}
.btn-cancel-soft-fill:hover{ background:var(--iq-paper) !important; border-color:#C9C3B8 !important; color:var(--iq-ink) !important; }
.btn-cancel-soft-fill span, .btn-cancel-soft-fill i, .btn-cancel-soft-fill svg{ color:var(--iq-ink) !important; }

/* Shared Queue-style buttons for pages that opt in */
.iq-btn{ display:inline-flex; align-items:center; gap:7px; border-radius:11px; padding:9px 15px; font:inherit; font-size:13.5px; font-weight:600; cursor:pointer; border:1px solid transparent; text-decoration:none; white-space:nowrap; }
.iq-btn svg, .iq-btn i{ width:16px; height:16px; }
.iq-btn-coral{ background:var(--iq-coral); color:#fff; } .iq-btn-coral:hover{ filter:brightness(.96); color:#fff; }
.iq-btn-light{ background:#fff; border-color:var(--iq-border); color:var(--iq-ink); } .iq-btn-light:hover{ border-color:#C9C3B8; color:var(--iq-ink); }

/* Shared export dropdown (backend/company/partials/export-menu.blade.php) */
.iq-export{ position:relative; display:inline-block; }
.iq-export > summary{ list-style:none; cursor:pointer; }
.iq-export > summary::-webkit-details-marker{ display:none; }
.iq-export > summary::marker{ content:''; }
.iq-export[open] > summary{ border-color:#C9C3B8; }
.iq-export .cv{ opacity:.6; }
.iq-export-menu{ position:absolute; top:calc(100% + 6px); right:0; min-width:190px; background:#fff; border:1px solid var(--iq-border); border-radius:12px; box-shadow:0 18px 40px -14px rgba(21,23,28,.32); padding:6px; z-index:60; }
.iq-export-menu a{ display:flex; align-items:center; gap:10px; padding:9px 11px; border-radius:8px; font-size:13px; font-weight:600; color:var(--iq-ink); text-decoration:none; white-space:nowrap; }
.iq-export-menu a svg, .iq-export-menu a i{ width:15px; height:15px; color:var(--iq-muted); }
.iq-export-menu a:hover{ background:var(--iq-soft); color:var(--iq-ink); } .iq-export-menu a:hover svg, .iq-export-menu a:hover i{ color:var(--iq-ink); }

/* =====================================================================
   InQueue shared page layout, ONE standard for every index page, modelled
   on the Queue page. Use these global classes so headers, stat tiles,
   filters, and tables line up identically across the console:
     .iq-page   → page wrapper (sits inside .page-content)
     .iq-top    → header row (breadcrumb + title + sub on the left, actions right)
     .iq-stats  → 4-up stat tile grid   .iq-stat / .iq-ic / .iq-num / .iq-lbl
     .iq-panel  → the single white card holding toolbar + table + footer
     .iq-toolbar→ filter/search bar (border-bottom inside the panel)
   ===================================================================== */
.iq-page *{ box-sizing:border-box; }

/* Header, values mirror the Queue page (.tkx/.secx) exactly so every page lines up */
.iq-top{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 20px; }
.iq-crumb{ font-size:12px; color:var(--iq-muted); font-weight:600; margin-bottom:4px; }
.iq-crumb a{ color:var(--iq-muted); text-decoration:none; } .iq-crumb a:hover{ color:var(--iq-ink); }
.iq-crumb .here{ color:var(--iq-coral); }
.iq-page .iq-top h1{ font-size:24px; font-weight:800; letter-spacing:-.02em; color:var(--iq-ink); margin:0; }
.iq-sub{ font-size:13px; color:var(--iq-muted); margin-top:4px; }
.iq-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }

/* Sub-navigation (tabs/pills) that sits directly under the page header */
.iq-subnav{ display:flex; gap:4px; flex-wrap:wrap; align-items:center; margin:0 0 20px; }
.iq-subnav a{ display:inline-flex; align-items:center; gap:7px; padding:8px 14px; border-radius:10px; font-size:13px; font-weight:600; color:var(--iq-muted); text-decoration:none; transition:.15s; white-space:nowrap; }
.iq-subnav a svg, .iq-subnav a i{ width:15px; height:15px; }
.iq-subnav a:hover{ background:var(--iq-soft); color:var(--iq-ink); }
.iq-subnav a.active{ background:var(--iq-coral-tint); color:var(--iq-coral); }

/* Stat tiles */
.iq-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:20px; }
@media(max-width:1050px){ .iq-stats{ grid-template-columns:1fr 1fr; } }
@media(max-width:520px){ .iq-stats{ grid-template-columns:1fr; } }
.iq-stat{ background:#fff; border:1px solid var(--iq-border); border-radius:15px; padding:16px 18px; display:flex; align-items:center; gap:14px; }
.iq-stat .iq-ic{ width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; flex:none; }
.iq-stat .iq-ic i, .iq-stat .iq-ic svg{ width:21px; height:21px; }
.iq-ic.coral{ background:var(--iq-coral-tint); color:var(--iq-coral); }
.iq-ic.blue{ background:var(--iq-blue-tint); color:var(--iq-blue); }
.iq-ic.green{ background:var(--iq-green-tint); color:var(--iq-green); }
.iq-ic.violet{ background:var(--iq-violet-tint); color:var(--iq-violet); }
.iq-ic.amber{ background:var(--iq-amber-tint); color:var(--iq-amber-ink); }
.iq-ic.slate{ background:#EDEEF1; color:#4B5563; }
.iq-stat .iq-num{ font-size:23px; font-weight:800; letter-spacing:-.02em; line-height:1; color:var(--iq-ink); }
.iq-stat .iq-lbl{ font-size:11.5px; color:var(--iq-muted); font-weight:500; margin-top:5px; }

/* Panel + toolbar (mirrors .tkx .panel/.toolbar/.search) */
.iq-panel{ background:#fff; border:1px solid var(--iq-border); border-radius:16px; }
/* Panels that hold kebab dropdowns must not clip them (matches Queue) */
.iq-page .panel, .iq-page .iq-panel{ overflow:visible !important; }
/* Right-align action cells so the kebab lines up under a right-aligned "Action" header */
.iq-page table td.ctr{ text-align:right; }

/* Canonical table look inside an .iq-panel — the single source of truth for the
   platform table style (matches the company Users/Queue reference). Pages that
   use it need no per-page table CSS. */
.iq-panel table{ width:100%; border-collapse:collapse; }
.iq-panel thead th{ text-align:left; font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--iq-muted); padding:12px 18px; background:var(--iq-soft); border-bottom:none; }
.iq-panel tbody td{ padding:13px 18px; border-top:1px solid var(--iq-line); border-bottom:none; font-size:13.5px; vertical-align:middle; }
.iq-panel tbody tr:hover td{ background:#FCFBF9; }
.iq-panel .empty{ text-align:center; color:var(--iq-muted); padding:44px 20px; font-size:13.5px; }
.iq-toolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:15px 18px; border-bottom:1px solid var(--iq-border); }
.iq-search{ flex:1; min-width:190px; max-width:280px; position:relative; }
.iq-search i, .iq-search svg{ position:absolute; left:13px; top:50%; transform:translateY(-50%); color:var(--iq-muted); width:16px; height:16px; pointer-events:none; }
.iq-search input{ width:100%; font-family:inherit; font-size:13.5px; color:var(--iq-ink); background:var(--iq-soft); border:1px solid var(--iq-border); border-radius:11px; padding:10px 14px 10px 36px; }
.iq-search input:focus{ outline:none; border-color:var(--iq-coral); background:#fff; box-shadow:0 0 0 3px rgba(255,90,60,.12); }
.iq-sel{ border:1px solid var(--iq-border); background:#fff; border-radius:10px; padding:9px 30px 9px 12px; font:inherit; font-size:13px; font-weight:600; color:var(--iq-ink); cursor:pointer; -webkit-appearance:none; appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238C887F' stroke-width='2.5'><path d='m6 9 6 6 6-6'/></svg>"); background-repeat:no-repeat; background-position:right 11px center; }


 
.iq-foot{ display:flex; align-items:center; justify-content:space-between; padding:13px 18px; border-top:1px solid var(--iq-border); }
.iq-foot .info{ font-size:12.5px; color:var(--iq-muted); font-weight:500; }
.iq-pg{ display:flex; gap:6px; }
.iq-pg a{ min-width:32px; height:32px; padding:0 10px; border-radius:8px; border:1px solid var(--iq-border); background:#fff; display:flex; align-items:center; justify-content:center; font-size:12.5px; font-weight:600; color:var(--iq-ink); text-decoration:none; }
.iq-pg a.disabled{ opacity:.4; pointer-events:none; }
.iq-pg a.on{ background:var(--iq-coral); border-color:var(--iq-coral); color:#fff; }
.iq-pg a i, .iq-pg a svg{ width:15px; height:15px; }

/* Kebab action menu (mirrors the Queue page action button) */
.iq-acts{ display:flex; justify-content:flex-end; position:relative; }
.iq-kebab{ width:34px; height:34px; border-radius:9px; border:1px solid var(--iq-border); background:#fff; display:flex; align-items:center; justify-content:center; color:var(--iq-muted); cursor:pointer; padding:0; }
.iq-kebab:hover, .iq-kebab.open{ border-color:var(--iq-coral); color:var(--iq-coral); }
.iq-kebab svg, .iq-kebab i{ width:16px; height:16px; }
.iq-menu{ position:absolute; top:40px; right:0; min-width:180px; background:#fff; border:1px solid var(--iq-border); border-radius:12px; box-shadow:0 18px 40px -14px rgba(21,23,28,.32); padding:6px; z-index:30; display:none; }
.iq-menu.show{ display:block; }
.iq-menu a{ display:flex; align-items:center; gap:10px; padding:9px 11px; border-radius:8px; font-size:13px; font-weight:600; color:var(--iq-ink); text-decoration:none; cursor:pointer; }
.iq-menu a svg, .iq-menu a i{ width:15px; height:15px; color:var(--iq-muted); }
/* Toolbar as a <form> gets a default browser margin — kill it so there is no gap before the table. */
.iq-toolbar{ margin:0; }
/* Kebab action menu: allow POST-form buttons (e.g. Approve) to render as menu items (CSP blocks inline onclick). */
.iq-menu form{ margin:0; }
.iq-menu button{ display:flex; align-items:center; gap:10px; width:100%; padding:9px 11px; border-radius:8px; font-size:13px; font-weight:600; color:var(--iq-ink); background:none; border:0; font-family:inherit; text-align:left; cursor:pointer; }
.iq-menu button svg, .iq-menu button i{ width:15px; height:15px; color:var(--iq-muted); }
.iq-menu a:hover, .iq-menu button:hover{ background:var(--iq-soft); }
.iq-menu .danger{ color:var(--iq-danger); }
.iq-menu .danger svg, .iq-menu .danger i{ color:var(--iq-danger); }
.iq-menu a:hover{ background:var(--iq-soft); } .iq-menu a:hover svg, .iq-menu a:hover i{ color:var(--iq-ink); }
.iq-menu .div{ height:1px; background:var(--iq-line2); margin:5px 4px; }
.iq-menu a.danger{ color:var(--iq-red); } .iq-menu a.danger svg, .iq-menu a.danger i{ color:var(--iq-red); } .iq-menu a.danger:hover{ background:var(--iq-red-tint); }

/* =====================================================================
   Dashboard KPI cards, restyle the existing summary cards to the InQueue look.
   ===================================================================== */
.summary-card-dashboard{ background:transparent !important; border:none !important; box-shadow:none !important; padding:0 !important; }
.summary-card-dashboard .card-title{ color:var(--iq-ink); font-size:16px; }
.summary-card-dashboard .summary{ display:grid !important; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)) !important; gap:16px !important; }
.summary-card-dashboard .summary-card{ background:#fff; border:1px solid #E2DED6; border-radius:16px; padding:20px; display:flex; align-items:flex-start; gap:12px; box-shadow:none; }
.summary-card-dashboard .summary-card .icon{ width:38px; height:38px; border-radius:11px; background:var(--iq-coral-tint); color:var(--iq-coral); display:flex; align-items:center; justify-content:center; flex:none; }
.summary-card-dashboard .summary-card .icon svg{ width:20px; height:20px; }
.summary-card-dashboard .summary-card .content .title{ font-size:28px; font-weight:700; color:var(--iq-ink); letter-spacing:-.02em; margin:0 0 2px; line-height:1.1; }
.summary-card-dashboard .summary-card .content .description{ font-size:13px; color:#9A968E; margin:0; }

/* =====================================================================
   Login background, Firefly queue illustration as a FAINT watermark,
   only on the sign-in page. The app-selector page is kept clean (no bg).
   ===================================================================== */
.login-bg::before{
    background-image: url("/assets/auth/illustrations/login-illustration.png") !important;
    background-color: var(--iq-cream) !important;
    background-blend-mode: multiply !important;
    background-size: cover !important;
    background-position: center bottom !important;
    background-repeat: no-repeat !important;
    opacity: 0.12 !important;
}
/* App-selector ("choose an application") page: no background illustration. */
.app-login-bg::before{ background-image: none !important; background-color: var(--iq-cream) !important; }


/* =====================================================================
   Top-bar live stats as rounded pills (mockup look)
   ===================================================================== */






/* ============================================================
   Device Setup design system (.ds), shared by Kiosk Setup and
   Display Setup. Extracted from the two blades (identical rules).
   Page-specific overrides remain inline in each blade.
   ============================================================ */
.ds{--ink:var(--iq-ink);--coral:var(--iq-coral);--coralD:var(--iq-coral);--coralT:var(--iq-coral-tint);--bd:var(--iq-border);--bd2:var(--iq-bg);--mut:var(--iq-muted);--mut2:var(--iq-muted2);--soft:var(--iq-soft);--grn:var(--iq-green);--grnT:var(--iq-green-tint);--violet:var(--iq-violet);--violetT:var(--iq-violet-tint);--blue:var(--iq-blue);--blueT:var(--iq-blue-tint);--amber:var(--iq-amber);--amberT:var(--iq-amber-tint);color:var(--ink);}
.ds *{box-sizing:border-box;}
.ds h1{font-size:24px;font-weight:800;letter-spacing:-.02em;margin:0;color:var(--ink);}
.ds .btn-coral{background:var(--coral);color:#fff;box-shadow:0 8px 18px -8px rgba(255,90,60,.7);}
.ds table{table-layout:fixed;width:100%;}
.ds td:last-child .acts{justify-content:flex-start;}
.main-content .iu3de2dd{background:var(--iq-red-tint);color:var(--iq-danger);border-color:#F3D2D2;}
.main-content .iu5371db{margin-top:10px;}
.ds .btn svg{width:16px;height:16px;}
.ds .btn-light{background:#fff;border-color:var(--bd);color:var(--ink);}
.ds .flash{padding:11px 15px;border-radius:12px;font-size:13.5px;margin-bottom:16px;background:var(--grnT);color:#2C6A43;font-weight:600;border:1px solid #BFE3C9;}
.ds .screen{display:flex;align-items:center;gap:13px;}
.ds .thumb.off{filter:grayscale(1);opacity:.55;}
.ds .thumb.off .dot{background:var(--iq-muted);box-shadow:none;}
.ds .nm{font-size:14px;font-weight:700;letter-spacing:-.01em;}
.ds .loc{font-size:11.5px;color:var(--mut);margin-top:2px;}
.ds .mono{font-family:ui-monospace,Menlo,monospace;font-weight:700;font-size:13px;display:inline-flex;align-items:center;gap:7px;}
.ds .cp{border:1px solid var(--bd);background:#fff;border-radius:7px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;color:var(--mut);cursor:pointer;}
.ds .cp:hover{border-color:var(--coral);color:var(--coralD);}
.ds .cp svg{width:13px;height:13px;}
.ds .muted{color:var(--mut2);font-size:12.5px;}
.ds .seen{font-size:12.5px;color:var(--mut);font-weight:500;}
.ds .kebab svg{width:16px;height:16px;}
/* Menu rows come in two shapes: <a> for a GET (Edit, Preview) and a <button>
   inside a <form> for anything that must POST (Duplicate, Make default,
   Delete). They have to be indistinguishable, so every rule below targets
   both. Styling only the anchor left the POST rows with browser-default
   buttons: lucide renders its icons at 24px unless told otherwise, so the
   Duplicate/Delete icons came out oversized and ink-coloured next to the
   15px muted Edit/Preview ones, with no hover and no red on Delete. */
.ds .menu a,
.ds .menu form button{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink);text-decoration:none;cursor:pointer;width:100%;background:none;border:0;font-family:inherit;text-align:left;}
.ds .menu a svg,
.ds .menu form button svg{width:15px;height:15px;color:var(--mut);flex:none;}
.ds .menu a:hover,
.ds .menu form button:hover{background:var(--soft);}
.ds .menu a:hover svg,
.ds .menu form button:hover svg{color:var(--ink);}
.ds .menu form{margin:0;}
.ds .menu a.danger,
.ds .menu form button.danger{color:var(--iq-red);}
.ds .menu a.danger svg,
.ds .menu form button.danger svg{color:var(--iq-red);}
.ds .menu a.danger:hover,
.ds .menu form button.danger:hover{background:var(--iq-red-tint);}
.ds .empty svg{width:34px;height:34px;color:#CFC9BE;}
.ds .overlay{position:fixed;inset:0;background:rgba(21,23,28,.42);backdrop-filter:blur(2px);display:none;align-items:center;justify-content:center;padding:24px;z-index:1050;}
.ds .overlay.show{display:flex;}
.ds .modal2{width:100%;max-width:460px;background:#fff;border-radius:20px;box-shadow:0 30px 70px -20px rgba(21,23,28,.45);overflow:hidden;}
.ds .mhead{padding:20px 22px 16px;border-bottom:1px solid var(--bd2);display:flex;gap:14px;align-items:flex-start;}
.ds .mhead .hic{width:42px;height:42px;border-radius:12px;flex:none;background:var(--coralT);color:var(--coralD);display:flex;align-items:center;justify-content:center;}
.ds .mhead h2{font-size:16.5px;font-weight:800;margin:0;letter-spacing:-.02em;}
.ds .mhead p{font-size:12px;color:var(--mut);margin:3px 0 0;}
.ds .mhead .x{margin-left:auto;width:32px;height:32px;border-radius:9px;border:1px solid var(--bd);background:#fff;color:var(--mut);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;}
.ds .mbody{padding:18px 22px;}
.ds .fl{display:block;font-size:12px;font-weight:700;margin-bottom:7px;}
.ds .fl .opt{color:var(--mut2);font-weight:500;font-size:11px;}
.ds .inp{width:100%;border:1px solid var(--bd);border-radius:11px;padding:11px 13px;font:inherit;font-size:13.5px;color:var(--ink);}
.ds .inp:focus{outline:none;border-color:var(--coral);box-shadow:0 0 0 3px var(--coralT);}
.ds .trow{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding:13px 15px;background:var(--soft);border-radius:12px;}
.ds .trow .tt{font-size:13px;font-weight:600;}
.ds .trow .th{font-size:11px;color:var(--mut);margin-top:2px;}
.ds .tg{width:38px;height:22px;border-radius:999px;background:#DAD5CC;position:relative;cursor:pointer;flex:none;}
.ds .tg::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.12s;}
.ds .tg.on{background:var(--coral);}
.ds .tg.on::after{left:18px;}
.ds .mfoot{padding:15px 22px;border-top:1px solid var(--bd2);display:flex;justify-content:flex-end;gap:10px;}
@media(max-width:1000px){.ds .stats{grid-template-columns:1fr 1fr;}}

/* ============================================================================
   Toasts, InQueue surface language
   ----------------------------------------------------------------------------
   ToastMagic ships gradient-filled cards that belong to no design system. These
   rules rebuild every toast as the same floating surface the console already
   uses for .iq-menu / .iq-export-menu: white, 1px var(--iq-border) hairline, 12px radius,
   0 18px 40px -14px rgba(21,23,28,.32) elevation. Type is carried by a 3px left
   accent and a tinted icon chip, using the status colors already defined for
   .iq-ic / .ds (green var(--iq-green), danger #C0392B, amber var(--iq-amber), blue var(--iq-blue)), so
   a toast reads as part of the product rather than a plugin.

   Weighting is deliberate: success is the quiet case (2.5s, set in _successMsg),
   danger/warning keep the 5s default and a stronger accent. Position is
   bottom-end (config/laravel-toaster-magic.php) because top-end sat on top of
   every page's Save / Add buttons.

   The package's ::before/::after progress bars are removed, not restyled. They
   hardcode a 3s animation regardless of the toast's actual timeOut, so the bar
   never told the truth, and its sweep was the part that read as "flashing".
   ========================================================================== */
.toast-container {
    --tm-surface: #FFFFFF;
    --tm-border: var(--iq-border);
    --tm-ink: var(--color-ink);
    --tm-muted: var(--color-stone);
    --tm-shadow: 0 18px 40px -14px rgba(21, 23, 28, .32);
    /* Status colors, same values the console uses for .iq-ic and .ds flashes. */
    --tm-success: var(--iq-green);  --tm-success-tint: var(--iq-green-tint);
    --tm-danger:  var(--color-danger);  --tm-danger-tint: var(--iq-red-tint);
    --tm-warning: var(--iq-amber);  --tm-warning-tint: var(--iq-amber-tint);
    --tm-info:    var(--iq-blue);  --tm-info-tint: var(--iq-blue-tint);
    padding: 18px !important;
}

.toast-container .toast-item {
    --tm-accent: var(--tm-info);
    --tm-accent-tint: var(--tm-info-tint);
    --tm-toast-max-width: 320px;
    position: relative;
    background: var(--tm-surface) !important;
    background-image: none !important;
    border: 1px solid var(--tm-border) !important;
    border-radius: 12px !important;
    box-shadow: var(--tm-shadow) !important;
    padding: 12px 14px 12px 16px !important;
    overflow: hidden;
}

/* 3px left accent, inset so it follows the 12px corner radius cleanly. */
.toast-container .toast-item::before {
    content: "";
    position: absolute;
    inset-block: 0;
    inset-inline-start: 0;
    width: 3px;
    background: var(--tm-accent);
    animation: none !important;
}

/* Kill the package's second progress element outright. */
.toast-container .toast-item::after {
    content: none !important;
    animation: none !important;
}

.toast-container .toast-item.toast-success { --tm-accent: var(--tm-success); --tm-accent-tint: var(--tm-success-tint); }
.toast-container .toast-item.toast-danger  { --tm-accent: var(--tm-danger);  --tm-accent-tint: var(--tm-danger-tint); }
.toast-container .toast-item.toast-warning { --tm-accent: var(--tm-warning); --tm-accent-tint: var(--tm-warning-tint); }
.toast-container .toast-item.toast-info    { --tm-accent: var(--tm-info);    --tm-accent-tint: var(--tm-info-tint); }

/* A failure carries more weight than a save: tint the whole surface faintly and
   deepen the accent, without going back to a gradient slab. */
.toast-container .toast-item.toast-danger,
.toast-container .toast-item.toast-warning {
    border-color: var(--tm-accent-tint) !important;
}
.toast-container .toast-item.toast-danger::before,
.toast-container .toast-item.toast-warning::before {
    width: 4px;
}

/* Icon chip: the .iq-ic pattern at toast scale. */
.toast-container .toast-item .toast-body-icon-container {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    border-radius: 9px;
    background: var(--tm-accent-tint);
    color: var(--tm-accent) !important;
}

.toast-container .toast-item .toast-body-icon-container svg {
    width: 16px;
    height: 16px;
}

.toast-container .toast-item .toast-body {
    gap: 11px;
    align-items: center;
}

.toast-container .toast-item .toast-body-title h4 {
    margin: 0;
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1.25;
    letter-spacing: -.005em;
    color: var(--tm-ink);
}

.toast-container .toast-item p {
    margin: 2px 0 0;
    font-size: 12.5px;
    line-height: 1.35;
    color: var(--tm-muted);
}

/* Close affordance: present but recessive until you go for it. */
.toast-container .toast-item .toast-close-btn {
    color: var(--tm-muted);
    opacity: .55;
    border-radius: 7px;
    transition: opacity .15s ease, background-color .15s ease;
}
.toast-container .toast-item .toast-close-btn:hover {
    opacity: 1;
    background: var(--iq-soft);
    color: var(--tm-ink);
}
.toast-container .toast-item .toast-close-btn:focus-visible {
    outline: none;
    opacity: 1;
    box-shadow: 0 0 0 3px rgba(var(--color-coral-rgb), .18);
}

/* Custom action button, matches .iq-btn geometry. */
.toast-container .toast-item .toast-custom-btn {
    border-radius: 9px;
    font-size: 12.5px;
    font-weight: 600;
    padding: 6px 11px;
}

/* Entrance: rise into place. 8px is enough to register as motion without
   drawing the eye the way a sweeping progress bar did. */
.toast-container .toast-item {
    transition: opacity .22s cubic-bezier(.16, 1, .3, 1),
                transform .22s cubic-bezier(.16, 1, .3, 1);
}
.toast-container .toast-item:not(.show) {
    opacity: 0;
    transform: translateY(8px);
}
.toast-container .toast-item.show {
    opacity: 1;
    transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
    .toast-container .toast-item,
    .toast-container .toast-item:not(.show) {
        transition: none !important;
        transform: none !important;
    }
}
/* ============================================================================
   Display choices table (<x-display.choices-table>)
   ----------------------------------------------------------------------------
   "Which display boards does this apply to" is asked on Live Streaming,
   Multimedia and the Layout composer. Those three used to answer it three
   different ways (coral chips, a checkbox list, a checkbox list with an inline
   note), so the same decision looked like three unrelated controls. One table,
   one toggle, using the same switch geometry as the Playback panel.
   ========================================================================== */
.dchoice{border:1px solid var(--iq-border);border-radius:14px;background:#fff;overflow:hidden;}
.dchoice-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid #EFEBE4;}
.dchoice-h h3{margin:0;font-size:13.5px;font-weight:700;color:var(--color-ink);}
.dchoice-h p{margin:3px 0 0;font-size:12px;color:var(--color-stone);}
.dchoice-all{background:none;border:1px solid var(--iq-border);border-radius:9px;padding:5px 11px;font:inherit;font-size:12px;font-weight:600;color:var(--color-ink);cursor:pointer;flex:none;}
.dchoice-all:hover{background:var(--iq-soft);}
.dchoice-empty{margin:0;padding:16px;font-size:13px;color:var(--color-stone);}

.dchoice-t{width:100%;border-collapse:collapse;}
.dchoice-t th{text-align:left;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--color-stone);font-weight:700;padding:9px 16px;border-bottom:1px solid #EFEBE4;}
.dchoice-t td{padding:11px 16px;border-bottom:1px solid #F4F1EA;vertical-align:middle;font-size:13px;}
.dchoice-t tr:last-child td{border-bottom:0;}
.dchoice-t tr:hover td{background:var(--iq-paper);}
.dchoice-t .ta-r{text-align:right;}

.dchoice-n{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--color-ink);}
.dchoice-n svg{width:15px;height:15px;color:var(--color-stone);flex:none;}
.dchoice-note{display:block;margin-top:2px;font-size:11.5px;color:var(--color-stone);}
/* Marks a board the other feature already owns, so the OFF toggle beside it
   reads as "in use elsewhere" rather than "you never turned this on". */
.dchoice-claim{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;background:var(--iq-amber-tint);color:var(--iq-amber-ink);border:1px solid #E9DDB5;vertical-align:middle;}
.dchoice-sec{color:var(--color-stone);}
.dchoice-any{color:var(--iq-muted2);font-style:italic;}

/* Same switch as .md .trow so the control reads identically to Playback. */
.dchoice-sw{display:inline-block;cursor:pointer;}
.dchoice-sw .tgi{display:none;}
.dchoice-sw .tg{width:36px;height:20px;border-radius:999px;background:#DAD5CC;position:relative;display:inline-block;flex:none;transition:background .15s;}
.dchoice-sw .tg::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s;}
.dchoice-sw .tgi:checked + .tg{background:var(--iq-green);}
.dchoice-sw .tgi:checked + .tg::after{left:18px;}
.dchoice-sw .tgi:focus-visible + .tg{box-shadow:0 0 0 3px rgba(var(--color-coral-rgb), .18);}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

@media (max-width:640px){
    .dchoice-t .dchoice-sec{display:none;}
}


/* =====================================================================
   Shared primitives (single source): buttons, flash, badges, form kit
   ===================================================================== */
.iq-page .btn{ display:inline-flex; align-items:center; gap:7px; border-radius:11px; padding:9px 15px; font:inherit; font-size:13.5px; font-weight:600; cursor:pointer; border:1px solid transparent; text-decoration:none; }
.iq-page .btn svg, .iq-page .btn i{ width:16px; height:16px; }
.iq-page .btn-coral{ background:var(--iq-coral); color:#fff; }
.iq-page .btn-light{ background:#fff; border-color:var(--iq-border); color:var(--iq-ink); }

.iq-page .flash{ padding:11px 15px; border-radius:12px; font-size:13.5px; margin-bottom:16px; background:var(--iq-green-tint); color:#2C6A43; font-weight:600; border:1px solid #BFE3C9; }
.iq-page .flash.err{ background:var(--iq-red-tint); color:var(--iq-danger); border-color:#F3D2D2; }

.iq-badge{ display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:700; padding:4px 11px; border-radius:999px; text-transform:uppercase; letter-spacing:.03em; }
.iq-badge .d{ width:6px; height:6px; border-radius:50%; background:currentColor; }
.iq-badge.coral{ background:var(--iq-coral-tint); color:var(--iq-coral); }
.iq-badge.green{ background:var(--iq-green-tint); color:var(--iq-green); }
.iq-badge.blue{ background:var(--iq-blue-tint); color:var(--iq-blue); }
.iq-badge.amber{ background:var(--iq-amber-tint); color:var(--iq-amber-ink); }
.iq-badge.red{ background:var(--iq-red-tint); color:var(--iq-danger); }
.iq-badge.violet{ background:var(--iq-violet-tint); color:var(--iq-violet); }
.iq-badge.grey{ background:#F1EEE9; color:var(--iq-muted); }

/* Form kit — shared field styling for create/edit pages (migrate incrementally). */
.iq-field{ display:flex; flex-direction:column; gap:6px; margin-bottom:14px; }
.iq-field:last-child{ margin-bottom:0; }
.iq-label{ font-size:12.5px; font-weight:700; color:var(--iq-ink); }
.iq-label .req{ color:var(--iq-coral); }
.iq-input, .iq-textarea{ width:100%; font-family:inherit; font-size:13.5px; color:var(--iq-ink); background:#fff; border:1px solid var(--iq-border); border-radius:11px; padding:10px 13px; outline:none; }
.iq-textarea{ min-height:90px; resize:vertical; }
.iq-input:focus, .iq-textarea:focus{ border-color:var(--iq-coral); box-shadow:0 0 0 3px rgba(255,90,60,.12); }
.iq-help{ font-size:12px; color:var(--iq-muted); }
.iq-label .opt{ color:var(--iq-muted2); font-weight:500; }
.iq-input::placeholder, .iq-textarea::placeholder{ color:var(--iq-muted2); }
select.iq-input{ cursor:pointer; appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%238C887F' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 13px center; padding-right:36px; }
.iq-input.mono{ font-family:ui-monospace,Menlo,monospace; letter-spacing:.06em; font-weight:600; }
.iq-input:disabled{ background:var(--iq-soft); color:var(--iq-muted); }
.iq-two{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:560px){ .iq-two{ grid-template-columns:1fr; } }
.iq-err{ border:1px solid var(--iq-coral); background:var(--iq-coral-tint); color:var(--iq-danger); font-size:13px; border-radius:12px; padding:12px 16px; }

/* Card + section header + toggle switch — shared chrome for form/detail pages. */
.iq-card{ background:#fff; border:1px solid var(--iq-border); border-radius:16px; box-shadow:0 1px 2px rgba(21,23,28,.04),0 8px 30px rgba(21,23,28,.05); margin-bottom:16px; }
.iq-sect{ padding:20px 22px; }
.iq-sh{ display:flex; align-items:center; gap:11px; }
.iq-sh .ic{ width:32px; height:32px; border-radius:9px; background:var(--iq-coral-tint); color:var(--iq-coral); display:flex; align-items:center; justify-content:center; flex:none; }
.iq-sh .ic svg{ width:17px; height:17px; }
.iq-sh h2{ font-size:15px; font-weight:720; letter-spacing:-.01em; margin:0; }
.iq-ssub{ font-size:12.5px; color:var(--iq-muted); margin:3px 0 16px 43px; }
.iq-sw{ position:relative; display:inline-flex; width:44px; height:25px; flex:none; }
.iq-sw input{ position:absolute; inset:0; opacity:0; margin:0; cursor:pointer; z-index:2; }
.iq-sw .track{ width:44px; height:25px; background:#DED9D0; border-radius:20px; transition:.18s; }
.iq-sw .track::after{ content:""; position:absolute; top:3px; left:3px; width:19px; height:19px; background:#fff; border-radius:50%; transition:.18s; box-shadow:0 1px 3px rgba(0,0,0,.22); }
.iq-sw input:checked ~ .track{ background:var(--iq-coral); }
.iq-sw input:checked ~ .track::after{ left:22px; }
.iq-sw.sm{ width:38px; height:22px; }
.iq-sw.sm .track{ width:38px; height:22px; }
.iq-sw.sm .track::after{ width:16px; height:16px; }
.iq-sw.sm input:checked ~ .track::after{ left:19px; }
