/*** Styles specific to snipe.fabri.cc ***/

/* =========================
   SNIPE THEME TOKENS
   ========================= */

:root,
html[data-theme="light"]{
    
    --font-ui: "Roboto Flex", Roboto, sans-serif;
    --font-mono: "Sanchez", serif;
    --themeHeaders: "Sanchez", serif;
    --themeBody: "Roboto Flex", Roboto, sans-serif;
    --themeH2: "Sanchez", serif;
    --themeFontFam: "Roboto Flex", Roboto, sans-serif;
    
    --ease: cubic-bezier(.2,.8,.2,1);
    --bg: linear-gradient(#f2f5f7, #e8edf1, #dde4ea);
    --text: rgba(15,18,20,.92);
    --muted: rgba(15,18,20,.68);

    --glass: rgba(255,255,255,.56);
    --glass-strong: rgba(255,255,255,.74);
    --glass-soft: rgba(255,255,255,.40);
    --ink: rgba(0,0,0,.05);

    --border: rgba(0,0,0,.10);
    --border-soft: rgba(0,0,0,.07);
    --bordRad: 11px;
    --bordRad-small: 6px;
    
    --shadow-lg: 0 20px 60px rgba(0,0,0,.16);
    --shadow-md: 0 14px 40px rgba(0,0,0,.14);
    --shadow-sm: 0 10px 24px rgba(0,0,0,.10);

    --btn-bg: rgba(0,0,0,.05);
    --btn-bg-hover: rgba(0,0,0,.085);
    --btn-border: rgba(74, 81, 83, 0.12);

    --btnColor: #c78f58;
    --btnColorAlt: #afb3bb;
    --btnLight: #afb7bb;
    
    --input-bg: rgba(255,255,255,.76);
    --input-border: rgba(0,0,0,.10);
    --input-text: rgba(15,18,20,.92);
    --placeholder: rgba(15,18,20,.50);
    
    --overlay: rgba(227, 207, 187, 0.52);
    /* old: --overlay: rgba(255,255,255,.42); */

    --accent: #324148;
    --accent-strong: #5d6b8e;
    --accent-soft: rgba(52,136,144,.12);

    --panel-bg: var(--glass);
    --panel-bg-strong: var(--glass-strong);
    --card-bg: rgba(255,255,255,.58);

    --topbar-text: rgba(15,18,20,.78);
    --menu-text: rgba(15,18,20,.88);
    
    --modalBG: rgba(255, 255, 255, 0.35);
    
    --mainColor: #2c607b;
    --invert: #faac18; /* yellow */
    --baseColor: rgba(255,255,255,1); /* white */
    --baseColor018: rgba(255,255,255,.18);
    --baseColor060: rgba(255,255,255,.60);
    --baseColor078: rgba(255,255,255,.78);
    --footColor: #49515b;
    
    --subMenuFake: #ece9ec;
    --matFake: #f7f7f9;
    
    --localBdropBg: url('https://snipe.fabri.cc/images/fabric-common-snipe-bg-1.jpg');
}

/* Dark theme */
html[data-theme="dark"]{
    --bg: linear-gradient(#40484f, #41454f, #30373c);
    --text: rgba(255,255,255,.92);
    --muted: rgba(255,255,255,.72);

    --glass: rgba(255,255,255,.08);
    --glass-strong: rgba(255,255,255,.12);
    --glass-soft: rgba(255,255,255,.05);
    --ink: rgba(0,0,0,.12);

    --border: rgba(255,255,255,.18);
    --border-soft: rgba(255,255,255,.10);

    --shadow-lg: 0 20px 60px rgba(0,0,0,.35);
    --shadow-md: 0 14px 40px rgba(0,0,0,.28);
    --shadow-sm: 0 10px 24px rgba(0,0,0,.18);

    --btn-bg: rgba(255,255,255,.10);
    --btn-bg-hover: rgba(255,255,255,.16);
    --btn-border: rgba(255,255,255,.14);
    
    --btnColor: #faac18; /* alt: dc9a32 */
    --btnColorAlt: #9682a7;
    --btnLight: #B0832D;
    
    --input-bg: rgba(0,0,0,.18);
    --input-border: rgba(255,255,255,.18);
    --input-text: rgba(255,255,255,.92);
    --placeholder: rgba(255,255,255,.58);

    --overlay: rgba(19, 14, 32, 0.7);
    --blur: blur(14px) saturate(140%);

    --accent: #faac18;
    --accent-strong: #4ca9bf;
    --accent-soft: rgba(111,184,194,.18);

    --panel-bg: var(--glass);
    --panel-bg-strong: var(--glass-strong);
    --card-bg: rgba(255,255,255,.07);

    --topbar-text: rgba(255,255,255,.82);
    --menu-text: rgba(255,255,255,.88);
    
    --modalBG: rgba(0, 0, 0, 0.35);
    
    --mainColor: #faac18; /* yellow */
    --invert: #828ca5; /* grey */
    --baseColor: rgba(0,0,0,1); /* black */
    --baseColor018: rgba(0,0,0,.18);
    --baseColor060: rgba(34, 32, 38, 0.55);
    --baseColor078: rgba(0,0,0,.78);
    --footColor: #faac18;
    
    --subMenuFake: #000;
    --blackVelvet: rgba(23, 25, 41, 0.7);
    --matFake: #f7f7f9;
}

#viewsLoader img {
    /*  alt filter: brightness(0) saturate(100%) invert(65%) sepia(6%) saturate(1078%) hue-rotate(162deg) brightness(86%) contrast(85%); */
    filter: brightness(0) saturate(100%) invert(88%) sepia(15%) saturate(5696%) hue-rotate(321deg) brightness(91%) contrast(69%);
    
    animation: none;
}

.loaderImgColor {
    position: relative;
}

.loaderColor {
    display: block;
}

.loaderColorMain {
    filter:
        brightness(0)
        saturate(100%)
        invert(88%)
        sepia(15%)
        saturate(5696%)
        hue-rotate(321deg)
        brightness(91%)
        contrast(69%)
        !important;

    animation:
        loaderMainSnipe
        3s
        ease-in-out
        infinite 
        !important;
}

.loaderColorAlt {
    position: absolute;
    inset: 0;

    filter:
        brightness(0)
        saturate(100%)
        invert(65%)
        sepia(6%)
        saturate(1078%)
        hue-rotate(162deg)
        brightness(86%)
        contrast(85%)
        !important;

    animation:
        loaderAltSnipe
        3s
        ease-in-out
        infinite
        !important;
}

@keyframes loaderMainSnipe {
    0%,
    20% {
        opacity: 1;
    }

    30%,
    70% {
        opacity: 0;
    }

    80%,
    100% {
        opacity: 1;
    }
}

@keyframes loaderAltSnipe {
    0%,
    20% {
        opacity: 0;
    }

    30%,
    70% {
        opacity: 1;
    }

    80%,
    100% {
        opacity: 0;
    }
}

html[data-theme="classic"] {
    --overlay: rgba(187, 203, 227, 0.62);
    --btnColorAlt: #afb3bb;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-mono);
}

p, a, label, input, text {
    font-family: var(--font-ui);
}

body.fabricSmallApp #overlay {
  background: var(--overlay) !important;
}

html[data-theme="classic"] body.fabricSmallApp #overlay {
  backdrop-filter: blur(3px) saturate(41%);
}

html[data-theme="classic"] body.fabricSmallApp button {
  background: var(--btnColorAlt);
}

body.fabricSmallApp .sideNavBtn {
    color: var(--offWhite) !important;
      border: .5px solid var(--baseColor018);
    background:var(--border-soft);
}

body.fabricSmallApp .sideNavBtn.is-active {
    background: var(--btnColor) !important;
}

body.fabricSmallApp .sideNavBtn:hover {
    background: var(--loadingPgBg) !important;
}

body.fabricSmallApp .appViews, 
body.fabricSmallApp .appView {
  background: var(--btn-bg);
  border: .5px solid var(--glass-soft);
}

.brandized {
    color: inherit !important;
}

.topOrgSwitcher {
    position: relative;
    min-width: 0;
}

.topOrgTrigger {
    min-height: 34px;
    max-width: 220px;
    padding: 0 34px 0 12px;
    border-radius: 999px;
    border: 1px solid rgba(0,0,0,.10);
    background: rgba(255,255,255,.55) !important;
    color: inherit;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    box-shadow: none;
    position: relative;
}

html[data-theme="dark"] .topOrgTrigger {
    background: rgba(0,0,0,.28) !important;
    border-color: rgba(255,255,255,.14);
}

.topOrgTrigger:hover {
    transform: translateY(-1px);
}

.topOrgLabel {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    opacity: .6;
    white-space: nowrap;
}

.topOrgCurrent {
    font-size: 13px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 120px;
    text-align: left;
}

.topOrgCaret {
    position: absolute;
    right: 12px;
    top: 50%;
    width: 8px;
    height: 8px;
    margin-top: -6px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
    opacity: .7;
}

.topOrgMenu {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    min-width: 220px;
    max-width: 280px;
    padding: 8px;
    border-radius: 16px;
    border: 1px solid rgba(0,0,0,.10);
    background: rgba(255,255,255,.88);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow: 0 18px 30px rgba(0,0,0,.12);
    display: none;
    z-index: 2000;
}

html[data-theme="dark"] .topOrgMenu {
    background: rgba(24,24,28,.92);
    border-color: rgba(255,255,255,.10);
}

.topOrgMenu.is-open {
    display: block;
}

.topOrgOption {
    width: 100%;
    min-height: 40px;
    padding: 10px 12px;
    border-radius: 12px;
    border: 0;
    background: transparent !important;
    color: inherit;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    cursor: pointer;
    box-shadow: none;
}

.topOrgOption:hover {
    background: rgba(0,0,0,.06) !important;
}

html[data-theme="dark"] .topOrgOption:hover {
    background: rgba(255,255,255,.08) !important;
}

.topOrgOption.is-active {
    background: rgba(0,0,0,.08) !important;
}

html[data-theme="dark"] .topOrgOption.is-active {
    background: rgba(255,255,255,.10) !important;
}

.topOrgOptionName {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.topOrgOptionCheck {
    font-size: 12px;
    opacity: .7;
}

.sideNavHelp {
    text-align: center;
}


/* =========================
   SNIPE LAUNCH WORKSPACE
   ========================= */

body.fabricSmallApp #overlay {
    background: var(--overlay) !important;
}

.snipeWorkspaceView,
.snipeLibraryView {
    width: 100%;
    max-width: 1180px;
    margin: 0 auto;
    text-align: left;
}

.snipeViewHeader {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 24px;
}

.snipeViewHeader h2,
.snipeViewHeader h3,
.snipeComposerHeading h3,
.snipePreviewHead h3,
.snipeResultCard h3,
.snipeLibraryCard h3,
.snipeNativeDialog h2 {
    margin: 0;
    color: var(--text);
}

.snipeViewHeader > div > p:last-child,
.snipeComposerCard small,
.snipePreviewCard > p,
.snipeLibrarySummary,
.snipeLibraryMeta,
.snipeDialogEmpty,
.snipeDialogLoading {
    color: var(--muted);
}

.snipeViewHeader > div > p:last-child {
    max-width: 720px;
    margin: 8px 0 0;
    line-height: 1.55;
}

.snipeEyebrow {
    margin: 0 0 6px;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--muted);
}

.snipeUsageBadge {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 0 14px;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--glass-soft);
    color: var(--text);
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}

.snipeUsageBadge.is-at-limit {
    border-color: rgba(171, 91, 43, .42);
    background: rgba(171, 91, 43, .10);
}

.snipeTypeTabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 18px;
}

body.fabricSmallApp .snipeTypeTab {
    min-height: 52px;
    margin: 0;
    padding: 0 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--btn-bg);
    color: var(--text);
    box-shadow: none;
    font-weight: 700;
    cursor: pointer;
    transition: transform .16s var(--ease), background .16s var(--ease), border-color .16s var(--ease);
}

body.fabricSmallApp .snipeTypeTab:hover {
    background: var(--btn-bg-hover);
    transform: translateY(-1px);
}

body.fabricSmallApp .snipeTypeTab.is-active {
    background: var(--accent);
    border-color: transparent;
    color: #fff;
}

html[data-theme="dark"] body.fabricSmallApp .snipeTypeTab.is-active {
    color: #161719;
}

.snipeComposerLayout {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, .82fr);
    gap: 18px;
    align-items: start;
}

.snipeComposerCard,
.snipePreviewCard,
.snipeResultCard,
.snipeLibraryCard,
.snipeLegacyBanner,
.snipeEmptyState {
    border: 1px solid var(--border-soft);
    background: var(--card-bg);
    box-shadow: var(--shadow-sm);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.snipeComposerCard,
.snipePreviewCard {
    border-radius: 24px;
    padding: 22px;
}

.snipeComposerHeading,
.snipePreviewHead {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
}

.snipeTypePanel {
    margin-top: 18px;
}

.snipeTypePanel[hidden] {
    display: none !important;
}

.snipeField {
    display: block;
    margin: 0 0 16px;
}

.snipeFieldLabel {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 7px;
    color: var(--text);
    font-size: 13px;
    font-weight: 750;
}

.snipeOptional {
    color: var(--muted);
    font-size: 11px;
    font-weight: 500;
}

.snipeField small {
    display: block;
    margin-top: 7px;
    font-size: 11px;
    line-height: 1.45;
}

.snipeField code {
    font-size: .95em;
}

body.fabricSmallApp .snipeField input,
body.fabricSmallApp .snipeField textarea,
body.fabricSmallApp .snipeField select,
body.fabricSmallApp .snipeSearchField input,
body.fabricSmallApp .snipeCompactField select,
#snipeResultCode {
    width: 100%;
    min-height: 44px;
    margin: 0;
    padding: 11px 13px;
    border: 1px solid var(--input-border);
    border-radius: 13px;
    background: var(--input-bg);
    color: var(--input-text);
    font: 500 14px/1.35 var(--font-ui);
    box-shadow: none;
    outline: none;
}

body.fabricSmallApp .snipeField textarea,
#snipeResultCode {
    resize: vertical;
}

#snipeHtmlInput,
#snipeCssInput,
#snipeJsInput {
    min-height: 150px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 12px;
    line-height: 1.5;
    tab-size: 2;
}

#snipeAllowedDomains {
    min-height: 82px;
}

#snipeResultCode {
    min-height: 64px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 12px;
    overflow-wrap: anywhere;
}

body.fabricSmallApp .snipeField input::placeholder,
body.fabricSmallApp .snipeField textarea::placeholder,
body.fabricSmallApp .snipeSearchField input::placeholder {
    color: var(--placeholder);
}

body.fabricSmallApp .snipeField input:focus-visible,
body.fabricSmallApp .snipeField textarea:focus-visible,
body.fabricSmallApp .snipeField select:focus-visible,
body.fabricSmallApp .snipeSearchField input:focus-visible,
body.fabricSmallApp .snipeCompactField select:focus-visible,
body.fabricSmallApp .snipeTypeTab:focus-visible,
body.fabricSmallApp .snipePrimaryButton:focus-visible,
body.fabricSmallApp .snipeSecondaryButton:focus-visible,
body.fabricSmallApp .snipeCardAction:focus-visible,
body.fabricSmallApp .snipeTextToolbar button:focus-visible,
body.fabricSmallApp .snipeDialogClose:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--accent) 48%, transparent);
    outline-offset: 2px;
    box-shadow: none;
}

.snipeTwoColumnFields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.snipeImageDrop {
    min-height: 190px;
    margin-bottom: 16px;
    padding: 24px;
    border: 1.5px dashed color-mix(in srgb, var(--accent) 42%, var(--border));
    border-radius: 20px;
    background: color-mix(in srgb, var(--accent-soft) 56%, transparent);
    color: var(--text);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-align: center;
    cursor: pointer;
    transition: transform .16s var(--ease), background .16s var(--ease), border-color .16s var(--ease);
}

.snipeImageDrop i {
    font-size: 27px;
    color: var(--accent);
}

.snipeImageDrop strong {
    font-size: 15px;
}

.snipeImageDrop span {
    color: var(--muted);
    font-size: 11px;
}

.snipeImageDrop:hover,
.snipeImageDrop.is-dragging {
    transform: translateY(-1px);
    border-color: var(--accent);
    background: var(--accent-soft);
}

.snipeExistingImage {
    margin: -5px 0 16px;
    padding: 10px 12px;
    border-radius: 12px;
    background: var(--glass-soft);
    color: var(--muted);
    font-size: 12px;
}

.snipeRichEditor {
    overflow: hidden;
    border: 1px solid var(--input-border);
    border-radius: 17px;
    background: var(--input-bg);
}

.snipeTextToolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    padding: 7px;
    border-bottom: 1px solid var(--border-soft);
    background: var(--glass-soft);
}

body.fabricSmallApp .snipeTextToolbar button {
    width: 36px;
    height: 34px;
    min-height: 34px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: transparent;
    color: var(--text);
    box-shadow: none;
    cursor: pointer;
}

body.fabricSmallApp .snipeTextToolbar button:hover {
    background: var(--btn-bg-hover);
}

.snipeTextEditor {
    min-height: 230px;
    padding: 15px;
    color: var(--input-text);
    font: 500 14px/1.55 var(--font-ui);
    outline: 0;
    overflow-wrap: anywhere;
}

.snipeTextEditor:empty::before {
    content: attr(data-placeholder);
    color: var(--placeholder);
    pointer-events: none;
}

.snipePublishOptions {
    margin-top: 18px;
    padding-top: 18px;
    border-top: 1px solid var(--border-soft);
}

.snipePremiumPill,
.snipePreviewChip,
.snipeTypeBadge,
.snipeStatusBadge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0 8px;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.snipePremiumPill {
    background: color-mix(in srgb, var(--accent) 12%, transparent);
    color: var(--accent);
}

.snipePremiumNote {
    color: var(--accent) !important;
    font-weight: 650;
}

.snipeField.is-premium-locked textarea {
    opacity: .58;
}

.snipeSafetyNotice {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: 4px 0 16px;
    padding: 13px 14px;
    border: 1px solid rgba(171, 91, 43, .28);
    border-radius: 14px;
    background: rgba(171, 91, 43, .08);
    color: var(--text);
}

.snipeSafetyNotice p {
    margin: 0;
    color: inherit;
    font-size: 12px;
    line-height: 1.5;
}

.snipeComposerStatus {
    margin: 12px 0 0;
    padding: 11px 13px;
    border-radius: 12px;
    background: var(--glass-soft);
    color: var(--text);
    font-size: 12px;
}

.snipeComposerStatus[data-kind="success"] {
    background: rgba(43, 133, 83, .10);
}

.snipeComposerStatus[data-kind="error"] {
    background: rgba(165, 54, 54, .10);
}

.snipeComposerActions,
.snipeResultActions,
.snipeLibraryActions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px;
}

.snipeComposerActions {
    justify-content: flex-end;
    margin-top: 18px;
}

body.fabricSmallApp .snipePrimaryButton,
body.fabricSmallApp .snipeSecondaryButton,
body.fabricSmallApp .snipeCardAction,
body.fabricSmallApp .snipeDialogClose {
    min-height: 42px;
    margin: 0;
    border-radius: 12px;
    border: 1px solid transparent;
    box-shadow: none;
    cursor: pointer;
    font: 700 13px/1 var(--font-ui);
}

body.fabricSmallApp .snipePrimaryButton {
    padding: 0 16px;
    background: var(--accent);
    color: #fff;
}

html[data-theme="dark"] body.fabricSmallApp .snipePrimaryButton {
    color: #151619;
}

body.fabricSmallApp .snipeSecondaryButton {
    padding: 0 15px;
    border-color: var(--border);
    background: var(--btn-bg);
    color: var(--text);
}

body.fabricSmallApp .snipePrimaryButton:hover:not(:disabled),
body.fabricSmallApp .snipeSecondaryButton:hover:not(:disabled),
body.fabricSmallApp .snipeCardAction:hover:not(:disabled) {
    transform: translateY(-1px);
}

body.fabricSmallApp .snipePrimaryButton:disabled,
body.fabricSmallApp .snipeSecondaryButton:disabled,
body.fabricSmallApp .snipeCardAction:disabled {
    opacity: .48;
    cursor: not-allowed;
    transform: none;
}

.snipePreviewCard {
    position: sticky;
    top: 18px;
}

.snipePreviewChip {
    background: var(--glass-soft);
    color: var(--muted);
    white-space: nowrap;
}

.snipePreviewStage {
    min-height: 350px;
    border: 1px solid var(--border-soft);
    border-radius: 18px;
    overflow: hidden;
    background: rgba(255,255,255,.82);
    display: grid;
    place-items: center;
}

html[data-theme="dark"] .snipePreviewStage {
    background: rgba(255,255,255,.92);
}

.snipePreviewStage > p {
    max-width: 280px;
    margin: 0;
    padding: 24px;
    color: rgba(25, 28, 31, .54);
    text-align: center;
    font-size: 13px;
    line-height: 1.5;
}

#snipePreviewFrame {
    width: 100%;
    min-height: 350px;
    border: 0;
    background: #fff;
}

.snipePreviewCard > .snipeHint {
    margin: 12px 2px 0;
    font-size: 11px;
    line-height: 1.45;
}

html.hide-snipe-hints .snipeHint {
    display: none !important;
}

.snipeResultCard {
    margin-top: 18px;
    padding: 20px;
    border-radius: 22px;
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 16px;
}

.snipeResultIcon {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--accent);
    color: #fff;
}

html[data-theme="dark"] .snipeResultIcon {
    color: #151619;
}

.snipeResultBody .snipeField {
    margin-top: 14px;
}

/* Library */
.snipeLibraryToolbar {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) auto auto;
    gap: 10px;
    align-items: end;
    margin-bottom: 12px;
}

.snipeSearchField {
    min-height: 44px;
    position: relative;
    display: flex;
    align-items: center;
}

.snipeSearchField > i {
    position: absolute;
    left: 13px;
    z-index: 1;
    color: var(--muted);
}

body.fabricSmallApp .snipeSearchField input {
    padding-left: 38px;
}

.snipeCompactField {
    display: grid;
    gap: 5px;
}

.snipeCompactField > span {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--muted);
}

body.fabricSmallApp .snipeCompactField select {
    min-width: 150px;
}

.snipeLibrarySummary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin: 0 2px 18px;
    font-size: 11px;
}

.snipeLibrarySummary p {
    margin: 0;
}

.snipeLibraryGrid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.snipeLibraryCard {
    min-width: 0;
    padding: 18px;
    border-radius: 20px;
}

.snipeLibraryCard.is-disabled {
    opacity: .7;
}

.snipeLibraryCardHead {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.snipeLibraryIdentity {
    min-width: 0;
}

.snipeLibraryTitle {
    overflow-wrap: anywhere;
    font-size: 17px;
    line-height: 1.25;
}

.snipeLibraryBadges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}

.snipeTypeBadge {
    background: var(--accent-soft);
    color: var(--accent);
}

.snipeStatusBadge.is-disabled {
    background: rgba(128, 128, 128, .12);
    color: var(--muted);
}

.snipeLibraryMeta {
    margin: 12px 0 15px;
    font-size: 11px;
}

body.fabricSmallApp .snipeCardAction {
    min-height: 36px;
    padding: 0 11px;
    border-color: var(--border);
    background: var(--btn-bg);
    color: var(--text);
    font-size: 11px;
}

body.fabricSmallApp .snipeCardAction.is-danger {
    border-color: rgba(165, 54, 54, .25);
    color: #9b3636;
    background: rgba(165, 54, 54, .07);
}

html[data-theme="dark"] body.fabricSmallApp .snipeCardAction.is-danger {
    color: #f0a0a0;
}

.snipeLegacyBanner {
    margin-bottom: 14px;
    padding: 15px 16px;
    border-radius: 17px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.snipeLegacyBanner strong {
    color: var(--text);
}

.snipeLegacyBanner p {
    margin: 4px 0 0;
    color: var(--muted);
    font-size: 12px;
    line-height: 1.45;
}

.snipeEmptyState {
    margin-top: 14px;
    padding: 42px 24px;
    border-radius: 22px;
    text-align: center;
}

.snipeEmptyState i {
    margin-bottom: 12px;
    font-size: 30px;
    color: var(--accent);
}

.snipeEmptyState h3,
.snipeEmptyState p {
    margin: 0;
}

.snipeEmptyState p {
    margin-top: 6px;
    color: var(--muted);
}

/* Native dialogs for preview/history */
.snipeNativeDialog {
    width: min(760px, calc(100vw - 32px));
    max-height: min(760px, calc(100vh - 32px));
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 24px;
    background: var(--panel-bg-strong);
    color: var(--text);
    box-shadow: var(--shadow-lg);
    overflow: hidden;
}

.snipeNativeDialog::backdrop {
    background: rgba(0,0,0,.46);
    backdrop-filter: blur(7px);
    -webkit-backdrop-filter: blur(7px);
}

.snipeDialogHead {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--border-soft);
}

body.fabricSmallApp .snipeDialogClose {
    width: 38px;
    height: 38px;
    min-height: 38px;
    padding: 0;
    border-color: var(--border);
    background: var(--btn-bg);
    color: var(--text);
    font-size: 22px;
}

.snipeDialogPreviewFrame {
    width: 100%;
    min-height: 460px;
    border: 0;
    background: #fff;
    display: block;
}

.snipeHistoryList {
    max-height: 600px;
    overflow: auto;
    padding: 14px;
}

.snipeHistoryRow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px;
    border-bottom: 1px solid var(--border-soft);
}

.snipeHistoryCopy {
    display: grid;
    gap: 3px;
}

.snipeHistoryCopy strong {
    color: var(--text);
    font-size: 13px;
}

.snipeHistoryCopy span {
    color: var(--muted);
    font-size: 11px;
}

.snipeDialogEmpty,
.snipeDialogLoading {
    margin: 0;
    padding: 20px;
    line-height: 1.5;
}



/* =========================================================
   SNIPE — HELP / HOW IT WORKS
   App-specific visuals layered onto the shared Fabric
   help-slider system.
   ========================================================= */


/* ---------------------------------------------------------
   HELP SURFACE
   --------------------------------------------------------- */

#view-help {
    position: relative;
}

#view-help #questSlider {
    height: 470px;

    overflow: hidden;
}

#view-help .hIwSlide {
    height: 100%;
    min-height: 0;

    padding: 25px 27px;
}

#view-help .helpCardInner {
    min-height: 0;
    height: 100%;

    gap: 14px;

    padding: 0;
}

#view-help .helpCardTop {
    align-items: flex-start;
}

#view-help .helpCardTop h3 {
    margin-top: 6px;
}

#view-help .helpDescription {
    max-width: 62ch;
}

#view-help .helpTip {
    margin-top: auto;
}


/* ---------------------------------------------------------
   SLIDER FOOTER
   Shared slider controls are absolute by default.
   Snipe keeps these neatly inside its footer row.
   --------------------------------------------------------- */

#view-help .helpSliderFooter {
    position: relative;

    grid-template-columns:
        40px
        1fr
        40px;

    max-width: 340px;

    margin:
        14px
        auto
        0;
}

#view-help .helpSliderFooter .sliderControl {
    position: static;

    inset: auto;

    width: 38px;
    height: 38px;

    line-height: 1;
}

#view-help .helpSliderFooter #prev,
#view-help .helpSliderFooter #next {
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
}

#view-help .helpProgress {
    align-items: center;
}

#view-help .helpDot {
    appearance: none;

    margin: 0;
}

#view-help .questCap {
    min-height: 15px;

    margin-top: 8px;
}


/* =========================================================
   COMMON SNIPE HELP VISUAL
   ========================================================= */

.snipeHelpVisual {
    min-height: 230px;

    padding: 17px;

    border-radius: var(--bordRad-small);

    background:
        linear-gradient(
            145deg,
            color-mix(
                in srgb,
                var(--surface) 90%,
                var(--accent) 10%
            ),
            color-mix(
                in srgb,
                var(--surface) 98%,
                transparent
            )
        );
}

.snipeHelpVisual::before {
    content: "";

    position: absolute;
    top: -70px;
    left: -55px;

    width: 150px;
    height: 150px;

    border-radius: 50%;

    background:
        color-mix(
            in srgb,
            var(--accent) 7%,
            transparent
        );

    pointer-events: none;
}

.snipeHelpVisual > * {
    position: relative;
    z-index: 1;
}


/* =========================================================
   SLIDE 1 — COMPOSER
   ========================================================= */

.snipeHelpComposer {
    display: grid;
    gap: 11px;

    width: 100%;
}

.snipeHelpTabs {
    display: inline-flex;
    gap: 5px;

    justify-self: start;

    padding: 4px;

    border: 1px solid var(--border);

    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--surface-strong) 88%,
            transparent
        );
}

.snipeHelpTabs span {
    display: inline-flex;
    align-items: center;
    gap: 5px;

    padding: 6px 10px;

    border-radius: 999px;

    color: var(--muted);

    font-size: 9px;
    font-weight: 650;
    letter-spacing: .04em;
}

.snipeHelpTabs span.is-active {
    background:
        color-mix(
            in srgb,
            var(--accent) 13%,
            var(--surface)
        );

    color: var(--accent);
}

.snipeHelpTabs i {
    font-size: 9px;
}

.snipeHelpComposerBody {
    display: grid;
    grid-template-columns:
        minmax(0, 1.1fr)
        minmax(135px, .75fr);

    gap: 11px;
}

.snipeHelpComposerFields,
.snipeHelpPreview {
    display: grid;
    gap: 8px;
}

.snipeHelpField {
    display: grid;
    gap: 3px;

    padding: 9px 10px;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background: var(--surface-strong);
}

.snipeHelpField small,
.snipeHelpPreview > small {
    color: var(--muted);

    font-size: 8px;
    font-weight: 650;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.snipeHelpField strong {
    overflow: hidden;

    color: var(--text);

    font-size: 10px;
    font-weight: 600;

    text-overflow: ellipsis;
    white-space: nowrap;
}

.snipeHelpDropZone {
    display: grid;
    place-items: center;
    gap: 5px;

    min-height: 72px;

    padding: 10px;

    border:
        1px dashed
        color-mix(
            in srgb,
            var(--accent) 35%,
            var(--border)
        );

    border-radius: var(--bordRad-tiny);

    background:
        color-mix(
            in srgb,
            var(--accent) 4%,
            var(--surface)
        );

    color: var(--muted);

    font-size: 9px;
    text-align: center;
}

.snipeHelpDropZone i {
    color: var(--accent);
    font-size: 18px;
}

.snipeHelpPreview {
    padding: 9px;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background:
        color-mix(
            in srgb,
            var(--surface-strong) 92%,
            transparent
        );
}

.snipeHelpPreviewCard {
    display: grid;
    gap: 5px;

    padding: 8px;

    border-radius: var(--bordRad-tiny);

    background: var(--surface);
}

.snipeHelpPreviewImage {
    display: grid;
    place-items: center;

    min-height: 48px;

    border-radius: calc(var(--bordRad-tiny) - 2px);

    background:
        color-mix(
            in srgb,
            var(--accent) 9%,
            var(--surface-muted)
        );

    color: var(--accent);

    font-size: 17px;
}

.snipeHelpPreviewCard strong {
    color: var(--text);

    font-size: 10px;
    font-weight: 650;
}

.snipeHelpPreviewCard span {
    color: var(--muted);

    font-size: 8px;
    line-height: 1.35;
}


/* =========================================================
   SLIDE 2 — EMBED
   ========================================================= */

.snipeHelpVisual--embed {
    display: grid;

    grid-template-columns:
        minmax(0, 1fr);

    align-content: center;
    gap: 8px;
}

.snipeHelpEmbedCode {
    display: grid;
    gap: 7px;

    width: 100%;

    padding: 11px 12px;

    box-sizing: border-box;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background:
        color-mix(
            in srgb,
            var(--surface-strong) 95%,
            var(--text) 5%
        );
}

.snipeHelpEmbedCodeTop {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;

    color: var(--muted);

    font-size: 8px;
    font-weight: 650;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.snipeHelpCopied {
    display: inline-flex;
    align-items: center;
    gap: 4px;

    color: var(--accent);
}

.snipeHelpEmbedCode code {
    display: block;

    overflow: hidden;

    color: var(--text);

    font-family:
        "SFMono-Regular",
        Consolas,
        "Liberation Mono",
        monospace;

    font-size: 9px;
    line-height: 1.5;

    text-overflow: ellipsis;
    white-space: nowrap;
}

.snipeHelpEmbedArrow {
    display: grid;
    place-items: center;

    height: 22px;

    color: var(--accent);

    font-size: 11px;
}

.snipeHelpDestinations {
    display: grid;
    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 8px;
}

.snipeHelpDestination {
    display: grid;
    place-items: center;
    gap: 6px;

    min-height: 63px;

    padding: 9px 6px;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background: var(--surface-strong);

    color: var(--muted);

    font-size: 8px;
    font-weight: 650;
    text-align: center;
}

.snipeHelpDestination i {
    color: var(--accent);

    font-size: 15px;
}


/* =========================================================
   SLIDE 3 — SYNC
   ========================================================= */

.snipeHelpVisual--sync {
    display: grid;

    grid-template-columns:
        minmax(130px, .8fr)
        42px
        minmax(0, 1.4fr);

    align-items: center;
    gap: 10px;
}

.snipeHelpSource {
    display: flex;
    align-items: center;
    gap: 9px;

    padding: 12px;

    border:
        1px solid
        color-mix(
            in srgb,
            var(--accent) 28%,
            var(--border)
        );

    border-radius: var(--bordRad-tiny);

    background:
        color-mix(
            in srgb,
            var(--accent) 8%,
            var(--surface)
        );
}

.snipeHelpSourceIcon {
    flex: 0 0 auto;

    display: grid;
    place-items: center;

    width: 32px;
    height: 32px;

    border-radius: var(--bordRad-tiny);

    background: var(--surface-strong);

    color: var(--accent);
}

.snipeHelpSource > div:last-child {
    display: grid;
    gap: 2px;

    min-width: 0;
}

.snipeHelpSource small,
.snipeHelpSource span {
    color: var(--muted);

    font-size: 7px;
}

.snipeHelpSource strong {
    overflow: hidden;

    color: var(--text);

    font-size: 10px;

    text-overflow: ellipsis;
    white-space: nowrap;
}

.snipeHelpSyncLines {
    display: grid;
    gap: 13px;
}

.snipeHelpSyncLines span {
    position: relative;

    display: block;

    width: 100%;
    height: 1px;

    background:
        color-mix(
            in srgb,
            var(--accent) 45%,
            var(--border)
        );
}

.snipeHelpSyncLines span::after {
    content: "";

    position: absolute;
    top: -3px;
    right: 0;

    width: 6px;
    height: 6px;

    border-top: 1px solid var(--accent);
    border-right: 1px solid var(--accent);

    transform: rotate(45deg);
}

.snipeHelpSyncTargets {
    display: grid;
    gap: 6px;
}

.snipeHelpSyncTarget {
    display: grid;

    grid-template-columns:
        auto
        1fr
        auto;

    align-items: center;
    gap: 8px;

    padding: 7px 8px;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background: var(--surface-strong);
}

.snipeHelpBrowserBar {
    display: flex;
    gap: 2px;
}

.snipeHelpBrowserBar i {
    display: block;

    width: 4px;
    height: 4px;

    border-radius: 50%;

    background: var(--muted);

    opacity: .35;
}

.snipeHelpSyncTarget strong {
    color: var(--text);

    font-size: 9px;
    font-weight: 650;
}

.snipeHelpSyncTarget small {
    color: var(--accent);

    font-size: 7px;
    font-weight: 650;
}


/* =========================================================
   SLIDE 4 — PUBLISHING
   ========================================================= */

.snipeHelpVisual--publish {
    display: grid;
    gap: 8px;

    align-content: center;
}

.snipeHelpPublishCard {
    display: grid;

    grid-template-columns:
        auto
        minmax(0, 1fr)
        auto;

    align-items: center;
    gap: 10px;

    padding: 9px 10px;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background: var(--surface-strong);
}

.snipeHelpPublishCard.is-selected {
    border-color:
        color-mix(
            in srgb,
            var(--accent) 35%,
            var(--border)
        );

    background:
        color-mix(
            in srgb,
            var(--accent) 6%,
            var(--surface)
        );
}

.snipeHelpPublishIcon {
    display: grid;
    place-items: center;

    width: 31px;
    height: 31px;

    border-radius: var(--bordRad-tiny);

    background:
        color-mix(
            in srgb,
            var(--accent) 10%,
            var(--surface)
        );

    color: var(--accent);
}

.snipeHelpPublishCopy {
    display: grid;
    gap: 1px;
}

.snipeHelpPublishCopy small {
    color: var(--muted);

    font-size: 7px;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.snipeHelpPublishCopy strong {
    color: var(--text);

    font-size: 10px;
}

.snipeHelpPublishCopy span {
    color: var(--muted);

    font-size: 8px;
}

.snipeHelpPremiumBadge {
    padding: 4px 7px;

    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--accent) 12%,
            transparent
        );

    color: var(--accent);

    font-size: 7px;
    font-weight: 750;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.snipeHelpPremiumOptions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;

    margin-top: 1px;
}

.snipeHelpPremiumOptions span {
    display: inline-flex;
    align-items: center;
    gap: 5px;

    padding: 5px 7px;

    border: 1px solid var(--border);

    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--surface-strong) 92%,
            transparent
        );

    color: var(--muted);

    font-size: 7px;
    font-weight: 600;
}

.snipeHelpPremiumOptions i {
    color: var(--accent);
}


/* =========================================================
   SLIDE 5 — LIBRARY
   ========================================================= */

.snipeHelpVisual--library {
    display: grid;
    gap: 9px;

    align-content: center;
}

.snipeHelpUsage {
    display: grid;
    gap: 5px;
}

.snipeHelpUsageTop {
    display: flex;
    justify-content: space-between;
    gap: 12px;

    color: var(--muted);

    font-size: 8px;
}

.snipeHelpUsageTop strong {
    color: var(--text);

    font-size: 9px;
}

.snipeHelpUsageTrack {
    overflow: hidden;

    height: 5px;

    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--muted) 14%,
            transparent
        );
}

.snipeHelpUsageTrack span {
    display: block;

    width: 70%;
    height: 100%;

    border-radius: inherit;

    background: var(--accent);
}

.snipeHelpLibraryRows {
    display: grid;
    gap: 5px;
}

.snipeHelpLibraryRow {
    display: grid;

    grid-template-columns:
        auto
        minmax(0, 1fr)
        auto;

    align-items: center;
    gap: 8px;

    padding: 7px 8px;

    border: 1px solid var(--border);

    border-radius: var(--bordRad-tiny);

    background: var(--surface-strong);
}

.snipeHelpLibraryRow.is-disabled {
    opacity: .52;
}

.snipeHelpType {
    min-width: 35px;

    padding: 4px 5px;

    border-radius: 999px;

    color: var(--accent);

    background:
        color-mix(
            in srgb,
            var(--accent) 10%,
            transparent
        );

    font-size: 6px;
    font-weight: 750;
    letter-spacing: .05em;
    text-align: center;
    text-transform: uppercase;
}

.snipeHelpLibraryCopy {
    display: grid;
    gap: 1px;

    min-width: 0;
}

.snipeHelpLibraryCopy strong {
    overflow: hidden;

    color: var(--text);

    font-size: 9px;
    font-weight: 650;

    text-overflow: ellipsis;
    white-space: nowrap;
}

.snipeHelpLibraryCopy small {
    color: var(--muted);

    font-size: 7px;
}

.snipeHelpLibraryActions {
    display: flex;
    gap: 7px;

    color: var(--muted);

    font-size: 8px;
}

.snipeHelpLibraryActions i:first-child {
    color: var(--accent);
}

.snipeHelpOffBadge {
    padding: 3px 6px;

    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--muted) 12%,
            transparent
        );

    color: var(--muted);

    font-size: 7px;
    font-weight: 700;
    text-transform: uppercase;
}



/* =========================================================
   RESPONSIVE CONTROL
   ========================================================= */

@media (max-width: 980px) {
    .snipeComposerLayout {
        grid-template-columns: 1fr;
    }

    .snipePreviewCard {
        position: static;
    }

    .snipePreviewStage,
    #snipePreviewFrame {
        min-height: 300px;
    }

    .snipeLibraryGrid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .topOrgSwitcher {
        display: none;
    }
}

@media (max-width: 760px) {

    #view-help #questSlider {
        height: 510px;
    }

    #view-help .hIwSlide {
        padding: 20px 17px;
    }

    #view-help .helpCardInner {
        gap: 12px;
    }

    #view-help .helpCardTop h3 {
        margin-top: 4px;
    }

    .snipeHelpVisual {
        min-height: 235px;

        padding: 13px;
    }


    /* composer */

    .snipeHelpComposerBody {
        grid-template-columns: 1fr;
    }

    .snipeHelpPreview {
        display: none;
    }


    /* sync */

    .snipeHelpVisual--sync {
        grid-template-columns:
            minmax(105px, .8fr)
            28px
            minmax(0, 1.2fr);

        gap: 7px;
    }

    .snipeHelpSource {
        padding: 8px;
    }

    .snipeHelpSourceIcon {
        width: 27px;
        height: 27px;
    }

    .snipeHelpSyncTarget {
        padding: 6px;
    }


    /* footer */

    #view-help .helpSliderFooter {
        max-width: 290px;
    }

}

@media (max-width: 720px) {
    .snipeWorkspaceView,
    .snipeLibraryView {
        padding-inline: 2px;
    }

    .snipeViewHeader,
    .snipeLegacyBanner,
    .snipeLibrarySummary {
        align-items: stretch;
        flex-direction: column;
    }

    .snipeViewHeader .snipePrimaryButton {
        width: 100%;
    }

    .snipeUsageBadge {
        align-self: flex-start;
    }

    .snipeTypeTabs {
        gap: 7px;
    }

    body.fabricSmallApp .snipeTypeTab {
        min-height: 48px;
        padding-inline: 10px;
        font-size: 12px;
    }

    .snipeComposerCard,
    .snipePreviewCard {
        padding: 16px;
        border-radius: 19px;
    }

    .snipeTwoColumnFields,
    .snipeLibraryToolbar {
        grid-template-columns: 1fr;
    }

    body.fabricSmallApp .snipeCompactField select {
        min-width: 0;
    }

    .snipeComposerActions,
    .snipeResultActions {
        display: grid;
        grid-template-columns: 1fr;
    }

    body.fabricSmallApp .snipeComposerActions button,
    body.fabricSmallApp .snipeResultActions button {
        width: 100%;
        min-height: 46px;
    }

    .snipeResultCard {
        grid-template-columns: 1fr;
    }

    .snipeResultIcon {
        width: 40px;
        height: 40px;
    }

    .snipeLibraryActions {
        gap: 7px;
    }

    body.fabricSmallApp .snipeCardAction {
        min-height: 40px;
    }

    .snipeDialogPreviewFrame {
        min-height: 360px;
    }
}

@media (max-width: 520px) {

    #view-help #questSlider {
        height: 525px;
    }

    #view-help .helpViewHeader {
        margin-bottom: 13px;
    }

    #view-help .helpViewHeader h2 {
        font-size: 25px;
    }

    #view-help .hIwSlide {
        padding: 18px 15px;
    }

    #view-help .helpDescription {
        font-size: 12px;
        line-height: 1.5;
    }

    #view-help .helpTip {
        padding: 8px 9px;

        font-size: 9px;
    }

    .snipeHelpTabs {
        width: 100%;

        box-sizing: border-box;
    }

    .snipeHelpTabs span {
        flex: 1;

        justify-content: center;

        padding-inline: 5px;
    }

    .snipeHelpDestinations {
        gap: 5px;
    }

    .snipeHelpDestination {
        min-height: 58px;

        padding-inline: 4px;
    }

    .snipeHelpEmbedCode code {
        font-size: 8px;
    }

    .snipeHelpVisual--sync {
        grid-template-columns:
            1fr
            20px
            1.25fr;
    }

    .snipeHelpSource {
        display: grid;
        gap: 5px;
    }

    .snipeHelpSyncTarget strong {
        font-size: 8px;
    }

    .snipeHelpPremiumOptions {
        gap: 4px;
    }

    .snipeHelpPremiumOptions span {
        padding: 4px 6px;

        font-size: 6px;
    }

    .snipeHelpLibraryActions {
        gap: 5px;
    }

}

@media (max-width: 480px) {
    .snipeTypeTab i {
        display: none;
    }

    .snipeImageDrop {
        min-height: 160px;
        padding: 18px;
    }

    .snipeTextEditor {
        min-height: 200px;
    }

    #snipeHtmlInput,
    #snipeCssInput,
    #snipeJsInput {
        min-height: 130px;
    }

    .snipeLibraryCard {
        padding: 15px;
    }

    .snipeNativeDialog {
        width: calc(100vw - 16px);
        max-height: calc(100vh - 16px);
        border-radius: 18px;
    }
}


/* =========================================================
   SNIPE — PUBLIC LAUNCH POLISH
   ========================================================= */

.marketingHowItWorks {
    margin: 34px 0;
    padding: 30px;
    border-radius: 28px;
    background: var(--panel-bg);
    border: 1px solid var(--border);
}

.marketingHowItWorksIntro {
    max-width: 760px;
    margin-bottom: 22px;
}

.marketingHelpMount {
    overflow: hidden;
}

.marketingHowItWorks #marketingQuestSlider {
    height: 470px;
    overflow: hidden;
}

.marketingHowItWorks .hIwSlide {
    height: 100%;
    min-height: 0;
    padding: 25px 27px;
}

.marketingHowItWorks .helpCardInner {
    min-height: 0;
    height: 100%;
    gap: 14px;
    padding: 0;
}

.marketingHowItWorks .helpCardTop {
    align-items: flex-start;
}

.marketingHowItWorks .helpCardTop h3 {
    margin-top: 6px;
}

.marketingHowItWorks .helpDescription {
    max-width: 62ch;
}

.marketingHowItWorks .helpTip {
    margin-top: auto;
}

.marketingHowItWorks .helpSliderFooter {
    position: relative;
    display: grid;
    grid-template-columns: 40px 1fr 40px;
    align-items: center;
    max-width: 340px;
    margin: 14px auto 0;
}

.marketingHowItWorks .helpSliderFooter .sliderControl {
    position: static;
    inset: auto;
    width: 38px;
    height: 38px;
    line-height: 1;
}

.marketingHowItWorks .helpProgress {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
}

.marketingHowItWorks .marketingHelpDot {
    appearance: none;
    width: 8px;
    height: 8px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: var(--border);
    cursor: pointer;
}

.marketingHowItWorks .marketingHelpDot.is-active {
    width: 20px;
    background: var(--accent);
}

.marketingHowItWorks .questCap {
    min-height: 15px;
    margin-top: 8px;
    text-align: center;
}

.marketingHowItWorksActions {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 22px;
}

.marketingPlanPeriod {
    font-size: .42em;
    font-weight: 650;
    opacity: .7;
}

.snipeFreePlanNote {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin: 0 0 18px;
    padding: 13px 16px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--glass-soft);
}

.snipeFreePlanNote[hidden] {
    display: none;
}

.snipeFreePlanNote > div {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 7px;
}

.snipeFreePlanNote strong {
    color: var(--text);
}

.snipeFreePlanNote span {
    color: var(--muted);
    font-size: 12px;
}

.snipeFreePlanNote button,
.snipePremiumNote button {
    appearance: none;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--accent);
    font: inherit;
    font-weight: 750;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

.snipeFreePlanNote button {
    flex: 0 0 auto;
    font-size: 12px;
}

.snipePremiumNote button {
    margin-left: 4px;
}

.snipeEmptyActions {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 9px;
    margin-top: 18px;
}

@media (max-width: 760px) {
    .marketingHowItWorks {
        padding: 22px 16px;
        border-radius: 22px;
    }

    .marketingHowItWorks #marketingQuestSlider {
        height: 510px;
    }

    .marketingHowItWorks .hIwSlide {
        padding: 20px 17px;
    }

    .marketingHowItWorks .helpSliderFooter {
        max-width: 290px;
    }

    .marketingHowItWorksActions,
    .snipeFreePlanNote {
        align-items: stretch;
        flex-direction: column;
    }

    .marketingHowItWorksActions .marketingBtn,
    .snipeFreePlanNote button {
        width: 100%;
    }
}
