/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/* Generated deterministic Workspace Shell CSS critical bundle. Source order is package-bound in shell-bundle-manifest.json. */

/* ---- shell-base.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: inline-style-1
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- inline-style-1 ---- */
html, body {
    margin: 0;
    height: 100%;
    overflow: hidden;
    background: #050505;
  }

  :root {
    --v8-bg-mac: url("https://images.unsplash.com/photo-1557683316-973673baf926?q=80&w=2000&auto=format&fit=crop") /* v8e-bg-mac */;
    --v8-bg-win: url("https://images.unsplash.com/photo-1618553011681-37dce34a66bd?q=80&w=2000&auto=format&fit=crop");
    --v8-bg-ios: linear-gradient(180deg, rgba(24, 31, 58, 0.12), rgba(10, 16, 28, 0.35)), url("https://images.unsplash.com/photo-1519608487953-e999c86e7455?q=80&w=2000&auto=format&fit=crop");
    --v8-bg-android: linear-gradient(180deg, rgba(13, 23, 28, 0.2), rgba(5, 12, 16, 0.45)), url("https://images.unsplash.com/photo-1518770660439-4636190af475?q=80&w=2000&auto=format&fit=crop");
    --v8-glass-bg: rgba(19, 25, 36, 0.68);
    --v8-glass-strong: rgba(8, 12, 20, 0.84);
    --v8-glass-border: rgba(255, 255, 255, 0.12);
    --v8-glass-border-strong: rgba(255, 255, 255, 0.22);
    --v8-text-main: #f8fafc;
    --v8-text-soft: #cbd5e1;
    --v8-text-muted: #94a3b8;
    --v8-accent: #38bdf8;
    --v8-good: #22c55e;
    --v8-warn: #f59e0b;
    --v8-bad: #ef4444;
    --v8-shadow: 0 30px 80px rgba(0, 0, 0, 0.55);
    --v8-macos-menubar-height: 36px;
  }

  .v8-os-environment {
    position: relative;
    width: 100%;
    height: 100vh;
    min-height: 700px;
    max-height: 1050px;
    overflow: hidden;
    margin: 0;
    border-radius: 16px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    color: var(--v8-text-main);
    background-size: cover;
    background-position: center;
    box-shadow: var(--v8-shadow), 0 0 0 1px rgba(255,255,255,0.06);
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    transition: background-image 0.35s ease, filter 0.25s ease;
    isolation: isolate;
  }

  .v8-os-environment::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at top right, rgba(255,255,255,0.15), transparent 28%),
                linear-gradient(180deg, rgba(0,0,0,0.08), rgba(0,0,0,0.25));
    pointer-events: none;
    z-index: 0;
  }

  .v8-os-environment:fullscreen {
    width: 100vw;
    height: 100vh;
    max-height: none;
    margin: 0;
    border-radius: 0;
    box-shadow: none;
  }

  .v8-os-environment *,
  .v8-os-environment *::before,
  .v8-os-environment *::after { box-sizing: border-box; }

  .v8-selected-mac.v8-platform-mac { background-image: var(--v8-bg-mac); }
  .v8-selected-win.v8-platform-win { background-image: var(--v8-bg-win); }
  .v8-selected-mac.v8-platform-ios { background-image: var(--v8-bg-ios); }
  .v8-selected-win.v8-platform-android { background-image: var(--v8-bg-android); }

  .v8-is-offline {
    filter: saturate(0.78) brightness(0.9);
  }

  .v8-is-offline::after {
    content: "Offline Mode";
    position: absolute;
    right: 18px;
    bottom: 84px;
    z-index: 9;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(239, 68, 68, 0.9);
    color: #fff;
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    box-shadow: 0 8px 24px rgba(239, 68, 68, 0.35);
    pointer-events: none;
  }

  .v8-boot-screen {
    position: absolute;
    inset: 0;
    z-index: -1;
    display: none !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: transparent;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: none !important;
  }

  .v8-boot-screen .v8-unix-logs,
  .v8-boot-screen .v8-boot-gui,
  .v8-boot-screen .v8-boot-bar,
  .v8-boot-screen .v8-boot-fill { display: none !important; }

  .v8-unix-logs {
    position: absolute;
    top: 16px;
    left: 16px;
    width: calc(100% - 32px);
    color: #10b981;
    font: 0.78rem/1.4 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    display: flex;
    flex-direction: column;
    gap: 2px;
    opacity: 0.9;
  }

  .v8-boot-gui {
    display: none;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    animation: v8-fade-in 0.4s ease forwards;
  }

  .v8-boot-logo {
    font-size: 2.6rem;
    font-weight: 800;
    letter-spacing: 0.18em;
  }

  .v8-boot-bar {
    width: 240px;
    height: 5px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(255,255,255,0.08);
  }

  .v8-boot-fill {
    height: 100%;
    width: 0;
    background: linear-gradient(90deg, #fff, #94e2ff);
    border-radius: inherit;
    animation: v8-boot-load 1.7s cubic-bezier(0.4, 0, 0.2, 1) forwards;
  }

  @keyframes v8-boot-load {
    0% { width: 0%; }
    40% { width: 34%; }
    80% { width: 82%; }
    100% { width: 100%; }
  }

  @keyframes v8-fade-in {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
  }

  .v8-global-controls {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 99998;
    display: flex;
    align-items: center;
    gap: 10px;
    opacity: 1;
    animation: none;
  }

  .v8-control-chip {
    height: 38px;
    padding: 0 14px;
    border: 1px solid var(--v8-glass-border);
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.52);
    backdrop-filter: blur(16px);
    color: #fff;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.84rem;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.18s ease, background 0.18s ease, border-color 0.18s ease;
  }

  .v8-control-chip:hover {
    transform: translateY(-1px);
    background: rgba(255,255,255,0.12);
    border-color: rgba(255,255,255,0.28);
  }

  .v8-control-chip.active {
    background: rgba(56, 189, 248, 0.92);
    border-color: rgba(56, 189, 248, 0.92);
    color: #02131d;
  }

  .v8-control-chip svg {
    width: 14px;
    height: 14px;
    fill: currentColor;
    flex: 0 0 auto;
  }

  .v8-device-pill {
    pointer-events: none;
    background: rgba(255,255,255,0.1);
    border-color: rgba(255,255,255,0.14);
    color: var(--v8-text-soft);
    font-weight: 500;
  }

  .v8-mobile-topbar,
  .v8-phone-search,
  .v8-phone-dock,
  .v8-android-nav,
  .v8-ios-home-indicator,
  .v8-mobile-page-dots {
    display: none;
  }

  .v8-mobile-topbar {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 34px;
    z-index: 9997;
    padding: 0 14px;
    align-items: center;
    justify-content: space-between;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    color: #fff;
    background: linear-gradient(180deg, rgba(0,0,0,0.36), rgba(0,0,0,0));
  }

  .v8-mobile-topbar-right {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 0.78rem;
  }


/* v1.6.605 — restore phone theme switcher visibility. */
.v8-mobile-topbar-left {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.v8-mobile-theme-toggle {
  display: none;
}

.v8-device-phone .v8-mobile-theme-toggle {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  min-height: 24px !important;
  height: 24px !important;
  padding: 0 8px !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
  border-radius: 999px !important;
  background: rgba(9,14,24,0.56) !important;
  color: #fff !important;
  font-size: 0.72rem !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  box-shadow: 0 6px 14px rgba(0,0,0,0.22) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"] {
  background: rgba(37,99,235,0.72) !important;
}

.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"] {
  background: rgba(15,23,42,0.62) !important;
}

.v8-device-phone .v8-mobile-theme-glyph {
  font-size: 0.82rem;
  line-height: 1;
}

.v8-device-phone .v8-mobile-topbar-right {
  gap: 7px;
}

@media (max-width: 374px) {
  .v8-device-phone .v8-mobile-theme-label {
    display: none;
  }
  .v8-device-phone .v8-mobile-theme-toggle {
    width: 26px !important;
    padding: 0 !important;
  }
}


  #v8-battery-mini,
  #v8-battery-label,
  #v8-battery-taskbar {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 3.25em;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }

  #v8-battery-mini[data-v8-battery-trusted="0"],
  #v8-battery-label[data-v8-battery-trusted="0"],
  #v8-battery-taskbar[data-v8-battery-trusted="0"] {
    min-width: 2.25em;
    opacity: 0.82;
  }

  #v8-battery-taskbar {
    min-width: 2.8em;
  }

  .v8-mobile-topbar button {
    background: none;
    border: none;
    padding: 0;
    color: inherit;
    font: inherit;
    cursor: pointer;
  }

  .v8-phone-search {
    position: absolute;
    top: 52px;
    left: 50%;
    -webkit-transform: translateX(-50%) translateZ(0);
    transform: translateX(-50%) translateZ(0);
    will-change: transform;
    isolation: isolate;
    width: min(92%, 420px);
    height: 38px;
    z-index: 7;
    padding: 0 14px;
    border-radius: 999px;
    background: rgba(16, 18, 24, 0.48);
    backdrop-filter: blur(18px);
    border: 1px solid rgba(255,255,255,0.08);
    align-items: center;
    gap: 10px;
    color: rgba(255,255,255,0.84);
    font-size: 0.84rem;
  }

  .v8-phone-dock {
    position: absolute;
    left: 50%;
    bottom: 20px;
    transform: translateX(-50%);
    width: min(92%, 420px);
    padding: 10px;
    z-index: 7;
    border-radius: 28px;
    background: rgba(255,255,255,0.17);
    backdrop-filter: blur(32px);
    border: 1px solid rgba(255,255,255,0.22);
    display: none;
    justify-content: center;
    gap: 14px;
  }

  .v8-phone-dock .v8-taskbar-icon {
    width: 56px;
    height: 56px;
    font-size: 1.7rem;
    border-radius: 16px;
    border: none;
    background: rgba(255,255,255,0.14);
  }

  .v8-mobile-page-dots {
    position: absolute;
    bottom: 102px;
    left: 50%;
    transform: translateX(-50%);
    gap: 8px;
    z-index: 7;
  }

  .v8-mobile-page-dots span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: rgba(255,255,255,0.38);
  }

  .v8-mobile-page-dots span.active {
    width: 18px;
    border-radius: 999px;
    background: rgba(255,255,255,0.95);
  }

  .v8-ios-home-indicator {
    position: absolute;
    left: 50%;
    bottom: 8px;
    transform: translateX(-50%);
    width: 138px;
    height: 5px;
    border-radius: 999px;
    background: rgba(255,255,255,0.95);
    z-index: 7;
    opacity: 0.94;
  }

  .v8-android-nav {
    position: absolute;
    left: 50%;
    bottom: 10px;
    transform: translateX(-50%);
    width: min(90%, 360px);
    height: 34px;
    z-index: 7;
    display: none;
    align-items: center;
    justify-content: center;
    gap: 28px;
    color: rgba(255,255,255,0.88);
    font-size: 1rem;
  }

  .v8-android-nav button {
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 50%;
    background: rgba(255,255,255,0.08);
    color: inherit;
    font-size: 0.95rem;
    cursor: pointer;
  }

  .v8-menubar {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: var(--v8-macos-menubar-height, 36px);
    z-index: 9996;
    padding: 0 14px;
    display: none;
    align-items: center;
    background: rgba(0, 0, 0, 0.35);
    backdrop-filter: blur(24px);
    border-bottom: 1px solid rgba(255,255,255,0.06);
    font-size: 0.84rem;
  }

  .v8-menubar-left,
  .v8-menubar-right {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 100%;
  }

  .v8-menubar-right {
    margin-left: auto;
    gap: 8px;
  }

  .v8-menu-root {
    position: relative;
    height: 100%;
    padding: 0 10px;
    display: inline-flex;
    align-items: center;
    border-radius: 6px;
    cursor: default;
  }

  .v8-menu-root:hover,
  .v8-menu-root.active { background: rgba(255,255,255,0.14); }

  .v8-mac-dropdown {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    width: 220px;
    display: none;
    flex-direction: column;
    padding: 6px;
    border-radius: 12px;
    background: rgba(18, 23, 32, 0.82);
    backdrop-filter: blur(28px);
    border: 1px solid var(--v8-glass-border);
    box-shadow: 0 18px 40px rgba(0,0,0,0.45);
  }

  .v8-menu-root.active .v8-mac-dropdown { display: flex; }


  /* v1.6.704: macOS dropdowns are viewport-anchored to the selected menubar item
     and self-correct fixed-containing-block offsets from shell transforms/filters. */
  .v8-platform-mac:not(.v8-device-phone) .v8-mac-dropdown.v8-mac-dropdown-anchored,
  .v8-platform-ios:not(.v8-device-phone) .v8-mac-dropdown.v8-mac-dropdown-anchored {
    position: fixed !important;
    z-index: 10030;
    margin-top: 0 !important;
    transform: none !important;
    overscroll-behavior: contain;
  }

  .v8-mac-dropdown-item {
    padding: 9px 12px;
    border-radius: 8px;
    color: #fff;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 0.84rem;
  }

  .v8-mac-dropdown-item:hover { background: rgba(56, 189, 248, 0.92); }

  .v8-status-trigger {
    height: 24px;
    padding: 0 9px;
    border: none;
    border-radius: 999px;
    background: rgba(255,255,255,0.08);
    color: inherit;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font: inherit;
    cursor: pointer;
    transition: background 0.18s ease;
  }

  .v8-status-trigger:hover { background: rgba(255,255,255,0.15); }

  /* macOS top bar breathing room. Keep status/identity pills and
     their glass shadow fully inside the menubar without changing shell chrome. */
  .v8-platform-mac:not(.v8-device-phone) .v8-menubar,
  .v8-platform-ios:not(.v8-device-phone) .v8-menubar {
    min-height: var(--v8-macos-menubar-height, 36px);
  }

  .v8-platform-mac:not(.v8-device-phone) .v8-menubar-left,
  .v8-platform-mac:not(.v8-device-phone) .v8-menubar-right,
  .v8-platform-ios:not(.v8-device-phone) .v8-menubar-left,
  .v8-platform-ios:not(.v8-device-phone) .v8-menubar-right {
    min-height: var(--v8-macos-menubar-height, 36px);
  }

  .v8-platform-mac:not(.v8-device-phone) .v8-status-trigger,
  .v8-platform-ios:not(.v8-device-phone) .v8-status-trigger {
    height: 26px;
    line-height: 26px;
  }


  .v8-network-icon.online { color: #a7f3d0; }
  .v8-network-icon.offline { color: #fecaca; }

  .v8-desktop {
    position: absolute;
    top: 44px;
    left: 16px;
    right: 16px;
    bottom: 84px;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    align-content: flex-start;
    gap: 14px;
    flex-wrap: wrap;
  }

  .v8-desktop-icon {
    width: 88px;
    padding: 10px 6px;
    border-radius: 12px;
    border: 1px solid transparent;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    transition: background 0.16s ease, border-color 0.16s ease, box-shadow 0.14s ease;
  }

  .v8-desktop-icon:hover,
  .v8-desktop-icon.selected {
    background: rgba(255,255,255,0.14);
    border-color: rgba(255,255,255,0.18);
    box-shadow: 0 10px 24px rgba(0,0,0,0.16);
    transform: none;
  }

  .v8-icon-img {
    font-size: 2.15rem;
    filter: drop-shadow(0 6px 12px rgba(0,0,0,0.45));
  }

  .v8-icon-text {
    font-size: 0.75rem;
    line-height: 1.2;
    text-align: center;
    text-shadow: 0 1px 3px rgba(0,0,0,0.8);
  }

  .v8-context-menu,
  .v8-status-panel {
    position: absolute;
    z-index: 99999;
    display: none;
    flex-direction: column;
    border-radius: 18px;
    background: rgba(15, 21, 32, 0.86);
    backdrop-filter: blur(30px) saturate(160%);
    border: 1px solid var(--v8-glass-border);
    box-shadow: 0 24px 60px rgba(0,0,0,0.52);
  }

  .v8-context-menu.active,
  .v8-status-panel.active {
    display: flex;
    animation: v8-fade-in 0.16s ease forwards;
  }

  .v8-context-menu {
    width: 230px;
    padding: 8px;
  }

  .v8-context-item {
    padding: 10px 12px;
    border-radius: 10px;
    color: #fff;
    font-size: 0.84rem;
    cursor: pointer;
  }

  .v8-context-item:hover { background: rgba(56, 189, 248, 0.9); }

  .v8-context-divider {
    height: 1px;
    margin: 6px 0;
    background: rgba(255,255,255,0.08);
  }

  .v8-status-panel {
    min-width: 310px;
    max-width: 360px;
    padding: 14px;
    gap: 12px;
  }

  .v8-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
  }

  .v8-panel-title {
    font-size: 1rem;
    font-weight: 700;
  }

  .v8-panel-close {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 50%;
    background: rgba(255,255,255,0.1);
    color: inherit;
    cursor: pointer;
  }

  .v8-time-hero {
    padding: 14px;
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(56, 189, 248, 0.18), rgba(255,255,255,0.04));
    border: 1px solid rgba(255,255,255,0.08);
  }

  .v8-time-now {
    font-size: 2rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    line-height: 1;
  }

  .v8-date-long {
    margin-top: 8px;
    color: var(--v8-text-soft);
    font-size: 0.92rem;
  }

  .v8-calendar-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
  }

  .v8-calendar-controls button,
  .v8-panel-action,
  .v8-soft-btn {
    height: 36px;
    padding: 0 12px;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.06);
    color: inherit;
    font-weight: 600;
    cursor: pointer;
  }

  .v8-calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 8px;
  }

  .v8-calendar-weekday,
  .v8-calendar-day {
    display: grid;
    place-items: center;
    min-height: 34px;
    border-radius: 12px;
    font-size: 0.84rem;
  }

  .v8-calendar-weekday {
    color: var(--v8-text-muted);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    font-size: 0.69rem;
  }

  .v8-calendar-day.muted { color: rgba(255,255,255,0.35); }
  .v8-calendar-day.today {
    background: rgba(56, 189, 248, 0.92);
    color: #03141d;
    font-weight: 800;
  }

  .v8-panel-card {
    padding: 12px;
    border-radius: 16px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.06);
  }

  .v8-network-state {
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .v8-network-dot {
    width: 13px;
    height: 13px;
    border-radius: 50%;
    flex: 0 0 auto;
  }

  .v8-network-dot.online {
    background: var(--v8-good);
    box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.12);
  }

  .v8-network-dot.offline {
    background: var(--v8-bad);
    box-shadow: 0 0 0 6px rgba(239, 68, 68, 0.12);
  }

  .v8-meta-grid {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 10px 16px;
    align-items: center;
    font-size: 0.85rem;
  }

  .v8-meta-grid dt {
    margin: 0;
    color: var(--v8-text-muted);
  }

  .v8-meta-grid dd {
    margin: 0;
    text-align: right;
    font-weight: 600;
    color: #fff;
  }

  .v8-panel-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
  }

  .v8-panel-action.primary {
    background: rgba(56, 189, 248, 0.92);
    border-color: rgba(56, 189, 248, 0.92);
    color: #03141d;
  }


  .v8-contact-us-action {
    flex: 1 1 100%;
    justify-content: center;
    min-height: 40px;
    letter-spacing: .04em;
    text-transform: uppercase;
    background: linear-gradient(135deg, rgba(34,197,94,.95), rgba(14,165,233,.9));
    border-color: rgba(255,255,255,.24);
    color: #03141d;
    box-shadow: 0 14px 32px rgba(14,165,233,.22);
  }

  .v8-network-contact-modal {
    position: fixed;
    inset: 0;
    z-index: 2147483300;
    display: none;
    align-items: center;
    justify-content: center;
    padding: max(16px, env(safe-area-inset-top, 0px)) max(16px, env(safe-area-inset-right, 0px)) max(16px, env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px));
    background: rgba(2, 6, 23, .68);
    backdrop-filter: blur(16px) saturate(150%);
  }

  .v8-network-contact-modal.active { display: flex; }

  .v8-network-contact-card {
    width: min(560px, 96vw);
    max-height: min(760px, 92dvh);
    overflow: auto;
    border-radius: 24px;
    border: 1px solid rgba(255,255,255,.16);
    background: linear-gradient(145deg, rgba(15,23,42,.98), rgba(15,23,42,.9));
    color: #f8fafc;
    box-shadow: 0 30px 90px rgba(0,0,0,.55);
  }

  .v8-network-contact-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.1rem;
    border-bottom: 1px solid rgba(255,255,255,.1);
    background: linear-gradient(135deg, rgba(14,165,233,.24), rgba(34,197,94,.14));
  }

  .v8-network-contact-head strong { display:block;font-size:1.05rem;letter-spacing:.03em; }
  .v8-network-contact-head span { display:block;margin-top:.2rem;color:#cbd5e1;font-size:.82rem;line-height:1.4; }
  .v8-network-contact-head button,
  .v8-network-contact-actions button {
    border: 1px solid rgba(255,255,255,.16);
    border-radius: 12px;
    background: rgba(255,255,255,.08);
    color: inherit;
    min-height: 38px;
    padding: 0 .8rem;
    cursor: pointer;
    font-weight: 700;
  }

  .v8-network-contact-form { display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.1rem 1.1rem; }
  .v8-network-contact-form label { display:flex;flex-direction:column;gap:.32rem;font-size:.78rem;font-weight:800;color:#cbd5e1;text-transform:uppercase;letter-spacing:.04em; }
  .v8-network-contact-form input,
  .v8-network-contact-form textarea {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid rgba(148,163,184,.3);
    border-radius: 13px;
    background: rgba(15,23,42,.82);
    color: #f8fafc;
    padding: .72rem .78rem;
    font: inherit;
    text-transform: none;
    letter-spacing: normal;
  }
  .v8-network-contact-form textarea { resize: vertical; min-height: 120px; }
  .v8-network-contact-grid { display:grid;grid-template-columns:1fr 1fr;gap:.75rem; }
  .v8-network-contact-intro { margin:.1rem 0 .25rem;color:#cbd5e1;font-size:.86rem;line-height:1.45; }
  .v8-network-contact-status { min-height: 1.2rem;font-size:.85rem;color:#cbd5e1; }
  .v8-network-contact-status.success { color:#86efac; }
  .v8-network-contact-status.error { color:#fecaca; }
  .v8-network-contact-actions { display:flex;justify-content:flex-end;gap:.6rem;flex-wrap:wrap;margin-top:.2rem; }
  .v8-network-contact-actions .primary { background:#22c55e;border-color:#86efac;color:#031611; }
  .v8-network-contact-actions button:disabled { opacity:.6;cursor:wait; }


  .v8-network-contact-upload {
    border:1px solid rgba(148,163,184,.24);
    border-radius:16px;
    padding:.75rem;
    background:rgba(15,23,42,.55);
    display:flex;
    flex-direction:column;
    gap:.55rem;
  }
  .v8-network-contact-upload[hidden],
  .v8-network-contact-server[hidden],
  .v8-network-contact-vault-picker[hidden] { display:none!important; }
  .v8-network-contact-upload-head { display:flex;justify-content:space-between;gap:.75rem;align-items:center;color:#f8fafc;font-size:.84rem; }
  .v8-network-contact-upload-head span { color:#94a3b8;font-size:.76rem;font-weight:700; }
  .v8-network-contact-file-input { text-transform:none!important;letter-spacing:0!important;color:#e5e7eb!important; }
  .v8-network-contact-file-input input[type="file"] { margin-top:.35rem;border-style:dashed;background:#020617; }
  .v8-network-contact-upload-summary,
  .v8-network-contact-selected { font-size:.78rem;color:#cbd5e1;line-height:1.45; }
  .v8-network-contact-server { display:flex;flex-direction:column;gap:.45rem; }
  .v8-network-contact-server button,
  .v8-network-contact-vault-head button,
  .v8-network-contact-vault-actions button,
  .v8-network-contact-selected-chip button {
    border:1px solid rgba(134,239,172,.35);border-radius:10px;background:#0f172a;color:#dcfce7;padding:.45rem .65rem;font-weight:800;cursor:pointer;
  }
  .v8-network-contact-selected-chip { display:inline-flex;align-items:center;gap:.35rem;margin:.15rem .25rem .15rem 0;padding:.28rem .42rem;border:1px solid rgba(34,197,94,.25);border-radius:999px;background:rgba(34,197,94,.12);color:#dcfce7; }
  .v8-network-contact-selected-chip small { color:#86efac;font-size:.68rem; }
  .v8-network-contact-selected-chip button { padding:.05rem .32rem;border-radius:999px;line-height:1; }
  .v8-network-contact-vault-picker { border:1px solid rgba(56,189,248,.28);border-radius:14px;background:#020617;padding:.65rem; }
  .v8-network-contact-vault-head { display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;color:#e0f2fe; }
  .v8-network-contact-vault-body { max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:.35rem;padding-right:.15rem; }
  .v8-network-contact-vault-row { display:flex!important;flex-direction:row!important;align-items:flex-start;gap:.5rem;text-transform:none!important;letter-spacing:0!important;border:1px solid rgba(148,163,184,.16);border-radius:10px;padding:.45rem;background:rgba(15,23,42,.65); }
  .v8-network-contact-vault-row input { width:16px!important;min-width:16px;margin-top:.15rem; }
  .v8-network-contact-vault-row strong { color:#f8fafc;font-size:.82rem; }
  .v8-network-contact-vault-row small { display:block;color:#94a3b8;font-size:.7rem;margin-top:.12rem; }
  .v8-network-contact-vault-actions { display:flex;justify-content:flex-end;margin-top:.55rem; }

  .v8-network-contact-history {
    border: 1px solid rgba(148,163,184,.22);
    border-radius: 16px;
    background: rgba(15,23,42,.54);
    overflow: hidden;
  }
  .v8-network-contact-history[hidden] { display: none !important; }
  .v8-network-contact-history-head {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:.75rem;
    padding:.7rem .8rem;
    border-bottom:1px solid rgba(148,163,184,.18);
    color:#e2e8f0;
    font-size:.88rem;
  }
  .v8-network-contact-history-head button {
    border:1px solid rgba(255,255,255,.14);
    border-radius:999px;
    background:rgba(255,255,255,.08);
    color:#f8fafc;
    padding:.35rem .65rem;
    font-size:.76rem;
    font-weight:800;
    cursor:pointer;
  }
  .v8-network-contact-history-body {
    display:flex;
    flex-direction:column;
    gap:.65rem;
    max-height:280px;
    overflow:auto;
    padding:.75rem;
  }
  .v8-network-contact-history-empty {
    color:#cbd5e1;
    font-size:.84rem;
    line-height:1.45;
  }
  .v8-network-contact-history-empty.error { color:#fecaca; }
  .v8-network-contact-history-item {
    border:1px solid rgba(148,163,184,.18);
    border-radius:14px;
    background:rgba(2,6,23,.32);
    padding:.75rem;
  }
  .v8-network-contact-history-top {
    display:flex;
    justify-content:space-between;
    gap:.75rem;
    align-items:flex-start;
  }
  .v8-network-contact-history-top strong { color:#f8fafc;font-size:.9rem; }
  .v8-network-contact-history-top span {
    flex:0 0 auto;
    border:1px solid rgba(134,239,172,.25);
    border-radius:999px;
    padding:.18rem .48rem;
    color:#bbf7d0;
    font-size:.68rem;
    font-weight:800;
    text-transform:uppercase;
  }
  .v8-network-contact-history-meta,
  .v8-network-contact-reply-meta,
  .v8-network-contact-no-reply {
    color:#94a3b8;
    font-size:.74rem;
    margin-top:.28rem;
  }
  .v8-network-contact-history-item p,
  .v8-network-contact-reply p {
    margin:.45rem 0 0;
    color:#dbeafe;
    font-size:.82rem;
    line-height:1.45;
    white-space:pre-wrap;
  }
  .v8-network-contact-reply {
    margin-top:.65rem;
    border-left:3px solid rgba(34,197,94,.55);
    padding:.55rem .65rem;
    background:rgba(34,197,94,.08);
    border-radius:10px;
  }
  .v8-network-contact-reply strong { display:block;color:#dcfce7;font-size:.82rem;margin-top:.15rem; }

  @media (max-width: 560px) {
    .v8-network-contact-grid { grid-template-columns:1fr; }
    .v8-network-contact-card { border-radius: 20px; }
  }

  .v8-start-menu {
    position: absolute;
    left: 50%;
    bottom: 64px;
    transform: translateX(-50%) translateY(16px);
    width: 400px;
    z-index: 99995;
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 20px;
    border-radius: 22px;
    opacity: 0;
    pointer-events: none;
    background: rgba(15, 23, 42, 0.84);
    backdrop-filter: blur(32px) saturate(180%);
    border: 1px solid rgba(255,255,255,0.08);
    box-shadow: 0 28px 70px rgba(0,0,0,0.55);
    transition: transform 0.22s ease, opacity 0.22s ease;
  }

  .v8-start-menu.active {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
  }

  .v8-start-search {
    height: 42px;
    border-radius: 999px;
    padding: 0 15px;
    display: flex;
    align-items: center;
    gap: 10px;
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.08);
    color: var(--v8-text-soft);
    font-size: 0.84rem;
  }

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

  .v8-start-app {
    padding: 12px 8px;
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    text-align: center;
  }

  .v8-start-app:hover { background: rgba(255,255,255,0.08); }

  .v8-start-app-icon { font-size: 1.65rem; }
  .v8-start-app-name { font-size: 0.74rem; color: #fff; }

  .v8-start-footer {
    padding-top: 14px;
    border-top: 1px solid rgba(255,255,255,0.08);
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .v8-start-user {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 0.84rem;
  }

  .v8-start-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: rgba(56, 189, 248, 0.9);
    color: #06161f;
    font-weight: 800;
  }

  .v8-start-power {
    width: 38px;
    height: 38px;
    border: none;
    border-radius: 12px;
    background: rgba(255,255,255,0.06);
    color: var(--v8-text-main);
    cursor: pointer;
  }

  .v8-window {
    position: absolute;
    width: 760px;
    height: 500px;
    z-index: 10;
    display: flex;
    flex-direction: column;
    opacity: 0.95;
    background: var(--v8-glass-bg);
    backdrop-filter: blur(26px) saturate(170%);
    border: 1px solid var(--v8-glass-border);
    box-shadow: 0 16px 50px rgba(0,0,0,0.45);
    transition: transform 0.24s ease, opacity 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  }

  .v8-window.v8-focused {
    opacity: 1;
    border-color: var(--v8-glass-border-strong);
    box-shadow: 0 30px 80px rgba(0,0,0,0.55);
  }

  .v8-window.minimized {
    opacity: 0;
    pointer-events: none;
    transform: translateY(70px) scale(0.92);
  }

  .v8-window.maximized {
    left: 0 !important;
    width: 100% !important;
    border-radius: 0 !important;
    transform: none !important;
  }

  .v8-platform-mac .v8-window,
  .v8-platform-ios .v8-window { border-radius: 18px; }

  .v8-platform-win .v8-window,
  .v8-platform-android .v8-window { border-radius: 10px; }

  .v8-platform-mac .v8-window.maximized { top: var(--v8-macos-menubar-height, 36px) !important; height: calc(100% - var(--v8-macos-menubar-height, 36px)) !important; }
  .v8-platform-win .v8-window.maximized,
  .v8-platform-android .v8-window.maximized { top: 0 !important; height: calc(100% - 54px) !important; }

  .v8-resizer {
    position: absolute;
    z-index: 3;
    touch-action: none;
  }

  .v8-resizer-e { top: 0; right: -5px; bottom: 0; width: 10px; cursor: e-resize; }
  .v8-resizer-s { left: 0; right: 0; bottom: -5px; height: 10px; cursor: s-resize; }
  .v8-resizer-se { right: -5px; bottom: -5px; width: 14px; height: 14px; cursor: se-resize; }

  .v8-window.maximized .v8-resizer { display: none; }

  .v8-window-header {
    position: relative;
    z-index: 2;
    height: 42px;
    padding: 0 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    background: rgba(0,0,0,0.28);
    border-bottom: 1px solid rgba(255,255,255,0.08);
    cursor: grab;
    touch-action: none;
  }

  .v8-window-header:active { cursor: grabbing; }

  .v8-window-title {
    flex: 1;
    font-size: 0.84rem;
    font-weight: 600;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    opacity: 0.85;
  }

  .v8-controls {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
  }

  .v8-control-btn {
    position: relative;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
  }

  .v8-platform-mac .v8-controls { order: 1; }
  .v8-platform-mac .v8-window-title { order: 2; text-align: center; padding-right: 50px; }
  .v8-platform-ios .v8-controls { order: 1; }
  .v8-platform-ios .v8-window-title { order: 2; text-align: center; padding-right: 12px; }
  .v8-platform-mac .v8-btn-close,
  .v8-platform-ios .v8-btn-close { background: #ff5f56; }
  .v8-platform-mac .v8-btn-min,
  .v8-platform-ios .v8-btn-min { background: #ffbd2e; }
  .v8-platform-mac .v8-btn-max,
  .v8-platform-ios .v8-btn-max { background: #28c840; }

  .v8-platform-win .v8-window-header,
  .v8-platform-android .v8-window-header {
    height: 46px;
    min-height: 46px;
    flex: 0 0 46px;
    background: rgba(0,0,0,0.52);
  }

  .v8-platform-win .v8-controls,
  .v8-platform-android .v8-controls {
    order: 2;
    margin-left: auto;
    gap: 0;
    height: 100%;
    margin-right: -14px;
  }

  .v8-platform-win .v8-window-title,
  .v8-platform-android .v8-window-title {
    order: 1;
    text-align: left;
    padding-left: 6px;
  }

  .v8-platform-win .v8-control-btn,
  .v8-platform-android .v8-control-btn {
    width: 48px;
    min-width: 48px;
    height: 100%;
    border-radius: 0;
    background: transparent;
    color: #fff;
  }

  .v8-win-svg {
    display: none;
    width: 10px;
    height: 10px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.2;
  }

  .v8-platform-win .v8-win-svg,
  .v8-platform-android .v8-win-svg { display: block; }

  .v8-platform-win .v8-control-btn:hover,
  .v8-platform-android .v8-control-btn:hover { background: rgba(255,255,255,0.12); }

  .v8-platform-win .v8-btn-close:hover,
  .v8-platform-android .v8-btn-close:hover { background: #e81123; }

  .v8-window-body {
    flex: 1;
    overflow: auto;
    position: relative;
    z-index: 1;
    user-select: text;
  }

  .v8-window-body::-webkit-scrollbar { width: 7px; }
  .v8-window-body::-webkit-scrollbar-thumb {
    background: rgba(255,255,255,0.15);
    border-radius: 999px;
  }

  .v8-content-inner {
    padding: 1.4rem;
    color: var(--v8-text-soft);
    line-height: 1.7;
  }

  .v8-content-inner h2 {
    margin: 0 0 1rem;
    padding-bottom: 0.55rem;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    color: #fff;
    font-size: 1.24rem;
  }

  .v8-content-inner h3 {
    margin: 1.25rem 0 0.45rem;
    color: var(--v8-accent);
    font-size: 1rem;
  }

  .v8-highlight-box {
    padding: 1rem 1.1rem;
    border-radius: 0 16px 16px 0;
    background: rgba(0,0,0,0.28);
    border-left: 3px solid var(--v8-accent);
  }

  .v8-app-layout {
    display: flex;
    min-height: 100%;
  }

  .v8-sidebar {
    width: 230px;
    flex: 0 0 auto;
    padding: 1rem 0;
    background: rgba(0,0,0,0.35);
    border-right: 1px solid rgba(255,255,255,0.06);
    overflow: auto;
  }

  .v8-sidebar-item {
    padding: 10px 15px;
    border-left: 3px solid transparent;
    color: var(--v8-text-muted);
    font-size: 0.84rem;
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
  }

  .v8-sidebar-item:hover {
    background: rgba(255,255,255,0.08);
    color: #fff;
  }

  .v8-sidebar-item.active {
    background: rgba(56, 189, 248, 0.12);
    border-left-color: var(--v8-accent);
    color: var(--v8-accent);
    font-weight: 600;
  }

  .v8-app-content {
    flex: 1;
    min-width: 0;
    padding: 1.2rem 1.4rem 1.4rem;
    background: rgba(255,255,255,0.02);
    overflow: auto;
  }

  .v8-tab-pane { display: none; animation: v8-fade-in 0.16s ease forwards; }
  .v8-tab-pane.active { display: block; }

  .v8-stat-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
  }

  .v8-stat-card {
    padding: 14px;
    border-radius: 16px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.06);
  }

  .v8-stat-label {
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--v8-text-muted);
  }

  .v8-stat-value {
    margin-top: 6px;
    font-size: 1.15rem;
    font-weight: 800;
    color: #fff;
  }

  .v8-taskbar {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9994;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    transition: transform 0.25s ease;
  }

  .v8-taskbar-icons {
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .v8-taskbar-icon,
  .v8-start-btn {
    position: relative;
    width: 46px;
    height: 46px;
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 14px;
    background: rgba(255,255,255,0.14);
    display: grid;
    place-items: center;
    cursor: pointer;
    font-size: 1.55rem;
    color: #fff;
    transition: transform 0.16s ease, background 0.16s ease, border-color 0.16s ease;
  }

  .v8-taskbar-icon:hover,
  .v8-start-btn:hover {
    transform: translateY(-2px);
    background: rgba(255,255,255,0.22);
    border-color: rgba(255,255,255,0.22);
  }

  .v8-taskbar-icon.open::after {
    content: "";
    position: absolute;
    bottom: -6px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #fff;
  }

  .v8-taskbar-icon::before,
  .v8-start-btn::before {
    content: attr(data-title);
    position: absolute;
    top: -34px;
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    opacity: 0;
    pointer-events: none;
    white-space: nowrap;
    padding: 4px 8px;
    border-radius: 8px;
    background: rgba(0,0,0,0.8);
    border: 1px solid rgba(255,255,255,0.08);
    font-size: 0.73rem;
    color: #fff;
    transition: opacity 0.16s ease, transform 0.16s ease;
  }

  .v8-taskbar-icon:hover::before,
  .v8-start-btn:hover::before {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }

  .v8-start-btn { display: none; }

  .v8-sys-tray {
    display: none;
    align-items: center;
    gap: 8px;
    position: absolute;
    right: 14px;
  }

  .v8-platform-mac .v8-taskbar,
  .v8-platform-ios .v8-taskbar {
    width: auto;
    left: 50%;
    right: auto;
    bottom: 16px;
    transform: translateX(-50%);
    padding: 10px 14px;
    border-radius: 28px;
    background: rgba(255,255,255,0.14);
    backdrop-filter: blur(34px);
    border: 1px solid rgba(255,255,255,0.22);
    box-shadow: 0 20px 50px rgba(0,0,0,0.28);
  }

  .v8-platform-mac .v8-taskbar-icon:hover,
  .v8-platform-ios .v8-taskbar-icon:hover {
    transform: translateY(-10px) scale(1.08);
  }

  .v8-platform-win .v8-taskbar,
  .v8-platform-android .v8-taskbar {
    bottom: 0;
    width: 100%;
    height: 54px;
    padding: 0 14px;
    justify-content: center;
    background: rgba(12, 18, 31, 0.84);
    backdrop-filter: blur(28px);
    border-top: 1px solid rgba(255,255,255,0.1);
    box-shadow: 0 -14px 40px rgba(0,0,0,0.28);
  }

  .v8-platform-win .v8-start-btn,
  .v8-platform-android .v8-start-btn { display: grid; }

  .v8-platform-win .v8-taskbar-icon,
  .v8-platform-android .v8-taskbar-icon,
  .v8-platform-win .v8-start-btn,
  .v8-platform-android .v8-start-btn {
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 8px;
    background: transparent;
    box-shadow: none;
  }

  .v8-platform-win .v8-taskbar-icon.open,
  .v8-platform-android .v8-taskbar-icon.open {
    background: rgba(255,255,255,0.08);
    border-bottom: 3px solid var(--v8-accent);
    border-radius: 8px 8px 3px 3px;
  }

  .v8-platform-win .v8-sys-tray,
  .v8-platform-android .v8-sys-tray { display: flex; }

  .v8-platform-ios .v8-start-menu,
  .v8-platform-mac .v8-start-menu { display: none !important; }

  .v8-platform-android .v8-start-menu {
    width: min(92%, 420px);
    bottom: 56px;
    border-radius: 26px 26px 0 0;
    padding-bottom: 22px;
  }

  .v8-device-phone .v8-global-controls { display: none; }
  .v8-device-phone .v8-mobile-topbar { display: flex; }
  .v8-device-phone .v8-window {
    left: 0 !important;
    top: 34px !important;
    width: 100% !important;
    height: calc(100% - 34px) !important;
    border-radius: 0 !important;
    transform: none !important;
  }

  .v8-device-phone .v8-window.maximized,
  .v8-device-phone .v8-window { height: calc(100% - 34px) !important; }

  .v8-device-phone .v8-window.minimized {
    transform: translateY(42px) scale(0.97) !important;
  }

  .v8-device-phone .v8-window-header { cursor: default; }
  .v8-device-phone .v8-resizer { display: none !important; }
  .v8-device-phone .v8-btn-max,
  .v8-device-phone .v8-btn-min { display: none; }

  .v8-device-phone .v8-desktop {
    top: 92px;
    left: 14px;
    right: 14px;
    bottom: 126px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px 10px;
    justify-items: center;
    align-content: start;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
  }

  .v8-device-phone .v8-desktop-icon {
    width: 100%;
    max-width: 86px;
    padding: 0;
    background: transparent;
    border: none;
  }

  .v8-device-phone .v8-icon-img {
    width: 62px;
    height: 62px;
    border-radius: 16px;
    display: grid;
    place-items: center;
    background: rgba(255,255,255,0.15);
    font-size: 1.65rem;
    backdrop-filter: blur(14px);
  }

  .v8-platform-ios.v8-device-phone .v8-phone-dock,
  .v8-platform-ios.v8-device-phone .v8-mobile-page-dots,
  .v8-platform-ios.v8-device-phone .v8-ios-home-indicator { display: flex; }

  .v8-platform-android.v8-device-phone .v8-phone-search,
  .v8-platform-android.v8-device-phone .v8-android-nav { display: flex; }

  .v8-platform-android.v8-device-phone .v8-desktop {
    top: 102px;
    bottom: 98px;
  }

  .v8-device-phone .v8-taskbar { display: none; }
  .v8-device-phone .v8-menubar { display: none !important; }

  .v8-device-tablet .v8-desktop {
    flex-direction: row;
    align-items: flex-start;
    gap: 16px;
  }

  .v8-device-tablet .v8-window {
    max-width: calc(100% - 30px);
  }

  .v8-device-tablet .v8-app-layout {
    flex-direction: column;
  }

  .v8-device-tablet .v8-sidebar {
    width: 100%;
    display: flex;
    padding: 0;
    overflow: auto hidden;
    border-right: none;
    border-bottom: 1px solid rgba(255,255,255,0.08);
  }

  .v8-device-tablet .v8-sidebar-item {
    border-left: none;
    border-bottom: 3px solid transparent;
    white-space: nowrap;
  }

  .v8-device-tablet .v8-sidebar-item.active {
    border-left: none;
    border-bottom-color: var(--v8-accent);
  }

  .v8-device-phone .v8-start-menu,
  .v8-device-phone .v8-status-panel {
    left: 50% !important;
    right: auto !important;
    width: min(94%, 420px) !important;
    max-width: 420px;
    transform: translateX(-50%);
  }

  .v8-device-phone .v8-status-panel {
    top: auto !important;
    bottom: 56px;
    border-radius: 24px;
  }

  .v8-device-phone .v8-stat-cards {
    grid-template-columns: 1fr;
  }

  .v8-hidden { display: none !important; }

  .v8-platform-mac:not(.v8-device-phone) .v8-menubar {
    display: flex;
  }

  .v8-platform-mac .v8-menubar {
    padding-left: 10px;
    padding-right: 12px;
    background:
      linear-gradient(180deg, rgba(38, 42, 52, 0.78), rgba(20, 24, 31, 0.62));
    border-bottom: 1px solid rgba(255,255,255,0.12);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.16),
      0 10px 24px rgba(0,0,0,0.18);
  }

  .v8-platform-mac .v8-menubar-left {
    gap: 2px;
  }

  .v8-platform-mac .v8-apple-root {
    width: 28px;
    justify-content: center;
    padding: 0;
  }

  .v8-platform-mac .v8-apple-root svg {
    width: 14px;
    height: 14px;
  }

  .v8-platform-mac .v8-taskbar {
    position: absolute;
    gap: 0;
    padding:
      10px 14px
      calc(10px + env(safe-area-inset-bottom, 0px));
    background:
      linear-gradient(180deg, rgba(255,255,255,0.24), rgba(255,255,255,0.12));
    border: 1px solid rgba(255,255,255,0.28);
    box-shadow:
      0 24px 48px rgba(0,0,0,0.34),
      inset 0 1px 0 rgba(255,255,255,0.3),
      inset 0 -1px 0 rgba(0,0,0,0.18);
  }

  .v8-platform-mac .v8-taskbar::before {
    content: "";
    position: absolute;
    inset: 1px;
    border-radius: inherit;
    background:
      linear-gradient(180deg, rgba(255,255,255,0.22), rgba(255,255,255,0.02) 48%, rgba(0,0,0,0.08));
    pointer-events: none;
  }

  .v8-platform-mac .v8-taskbar-icons {
    position: relative;
    gap: 10px;
    padding: 0 4px;
    z-index: 1;
  }

  .v8-platform-mac .v8-taskbar-icon {
    width: 56px;
    height: 56px;
    border-radius: 18px;
    border: 1px solid rgba(255,255,255,0.16);
    background:
      linear-gradient(180deg, rgba(255,255,255,0.18), rgba(255,255,255,0.07));
    box-shadow:
      0 12px 24px rgba(0,0,0,0.18),
      inset 0 1px 0 rgba(255,255,255,0.2);
    transform-origin: center bottom;
  }

  .v8-platform-mac .v8-taskbar-icon:hover {
    transform: translateY(-10px) scale(1.12);
  }

  .v8-platform-mac .v8-taskbar-icon.open::after {
    bottom: -8px;
    width: 7px;
    height: 7px;
    background: rgba(255,255,255,0.96);
    box-shadow: 0 0 10px rgba(255,255,255,0.55);
  }

  .v8-platform-mac .v8-start-btn {
    display: none !important;
  }

  .v8-platform-mac .v8-sys-tray {
    display: none !important;
  }

  .v8-platform-mac.v8-device-desktop .v8-desktop,
  .v8-platform-mac.v8-device-tablet .v8-desktop {
    bottom: 102px;
  }

/* v1.6.412: desktop/tablet windows are positioned by top/left only.
 * A focused-window bottom anchor can fight drag persistence and make windows
 * snap toward the lower-left after a move or delayed session restore. Phone
 * fullscreen windows keep their mobile rules. */
#v8-os-container:not(.v8-device-phone) .v8-window:not(.maximized),
.v8-os-environment:not(.v8-device-phone) .v8-window:not(.maximized) {
  bottom: auto !important;
}

/* v1.6.996 fallback: keep desktop macOS status pills inside the menubar even when coarse-pointer touch rules match. */
.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger,
.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger {
  height: 24px !important;
  min-height: 0 !important;
  max-height: 24px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  line-height: 1 !important;
  overflow: hidden !important;
}



/* ---- shell-icons.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-icon-customization-patch-style
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-icon-customization-patch-style ---- */
.v8-os-environment {
    --v8-custom-icon-scale: 1;
    --v8-dock-scale: 1;
    --v8-custom-wallpaper-dim: 0.18;
    --v8-phone-grid-columns: 3;
  }

  .v8-os-environment::before {
    background:
      radial-gradient(circle at top right, rgba(255,255,255,0.16), transparent 28%),
      linear-gradient(180deg, rgba(0,0,0, calc(var(--v8-custom-wallpaper-dim) * 0.36)), rgba(0,0,0, var(--v8-custom-wallpaper-dim)));
  }

  .v8-desktop.v8-custom-icon-layout {
    display: block !important;
    padding: 0;
    overflow: hidden;
  }

  .v8-desktop.v8-custom-icon-layout .v8-desktop-icon {
    position: absolute;
    width: calc(92px * var(--v8-custom-icon-scale));
    max-width: none;
    padding: calc(10px * var(--v8-custom-icon-scale)) 6px;
    margin: 0;
    touch-action: none;
    transition:
      background 0.16s ease,
      border-color 0.16s ease,
      box-shadow 0.14s ease,
      opacity 0.14s ease,
      filter 0.14s ease;
  }

  .v8-desktop.v8-custom-icon-layout .v8-desktop-icon .v8-icon-img {
    font-size: calc(2.15rem * var(--v8-custom-icon-scale));
  }

  .v8-desktop.v8-custom-icon-layout .v8-desktop-icon .v8-icon-text {
    font-size: calc(0.75rem * max(0.92, var(--v8-custom-icon-scale)));
  }

  .v8-desktop.v8-custom-icon-layout .v8-desktop-icon.v8-icon-dragging {
    z-index: 6;
    transition: none !important;
    box-shadow: 0 20px 36px rgba(0,0,0,0.34);
    background: rgba(255,255,255,0.2);
  }

  .v8-device-phone .v8-desktop,
  .v8-device-phone .v8-desktop.v8-custom-icon-layout,
  .v8-device-phone .v8-desktop.v8-phone-grid-layout {
    display: grid !important;
    grid-template-columns: repeat(var(--v8-phone-grid-columns), minmax(0, 1fr));
    grid-auto-rows: minmax(96px, auto);
    gap: 18px 10px;
    justify-items: center;
    align-items: start;
    align-content: start;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
    overscroll-behavior-x: none;
    scrollbar-width: none;
    padding-bottom: calc(32px + env(safe-area-inset-bottom, 0px));
    scroll-padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px));
    touch-action: pan-y;
  }

  .v8-device-phone .v8-desktop::-webkit-scrollbar {
    display: none;
  }


  @media (max-width: 430px) {
    .v8-device-phone.v8-os-environment,
    .v8-device-phone .v8-os-environment,
    .v8-device-phone {
      --v8-phone-grid-columns: 2;
    }
  }

  .v8-device-phone .v8-mobile-page-dots {
    display: none !important;
  }

  .v8-device-phone .v8-desktop .v8-desktop-icon,
  .v8-device-phone .v8-desktop.v8-custom-icon-layout .v8-desktop-icon,
  .v8-device-phone .v8-desktop.v8-phone-grid-layout .v8-desktop-icon {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    width: 100%;
    max-width: 112px;
    min-width: 0;
    min-height: 88px;
    margin: 0 auto;
    touch-action: pan-y !important;
    will-change: transform;
  }

  .v8-device-phone .v8-desktop .v8-desktop-icon *,
  .v8-device-phone .v8-desktop .v8-icon-img,
  .v8-device-phone .v8-desktop .v8-icon-text {
    touch-action: pan-y;
  }

  .v8-device-phone .v8-desktop.v8-phone-reorder-active .v8-desktop-icon,
  .v8-device-phone .v8-desktop .v8-desktop-icon.v8-icon-reordering,
  .v8-device-phone .v8-desktop .v8-desktop-icon.v8-icon-reordering * {
    touch-action: none !important;
  }

  .v8-device-phone .v8-desktop.v8-phone-reorder-active {
    touch-action: none;
    scroll-behavior: auto;
  }

  .v8-device-phone .v8-desktop-icon.v8-icon-reordering {
    z-index: 120 !important;
    opacity: 0.88;
    transform: scale(1.08);
    filter: drop-shadow(0 18px 22px rgba(0,0,0,0.36));
    transition: transform 0.08s ease, opacity 0.08s ease, filter 0.08s ease;
    touch-action: none !important;
  }

  .v8-platform-ios.v8-device-phone .v8-desktop.v8-phone-reorder-active .v8-desktop-icon:not(.v8-icon-reordering) {
    animation: v8-ios-icon-jiggle 0.16s infinite alternate ease-in-out;
  }

  .v8-platform-ios.v8-device-phone .v8-desktop-icon.v8-icon-reordering {
    animation: v8-ios-icon-jiggle 0.14s infinite alternate ease-in-out;
  }

  .v8-platform-android.v8-device-phone .v8-desktop-icon.v8-icon-reordering {
    animation: none;
    box-shadow: 0 16px 36px rgba(0,0,0,0.42), 0 0 0 1px rgba(255,255,255,0.14);
  }

  @keyframes v8-ios-icon-jiggle {
    from { transform: rotate(-1.4deg) scale(1.01); }
    to { transform: rotate(1.4deg) scale(1.03); }
  }

  @media (prefers-reduced-motion: reduce) {
    .v8-platform-ios.v8-device-phone .v8-desktop.v8-phone-reorder-active .v8-desktop-icon,
    .v8-platform-ios.v8-device-phone .v8-desktop-icon.v8-icon-reordering {
      animation: none !important;
    }
  }

  .v8-platform-mac .v8-taskbar,
  .v8-platform-ios .v8-taskbar {
    padding: calc(10px * var(--v8-dock-scale)) calc(14px * var(--v8-dock-scale));
  }

  .v8-platform-mac .v8-taskbar-icon,
  .v8-platform-mac .v8-start-btn,
  .v8-platform-ios .v8-taskbar-icon,
  .v8-platform-ios .v8-start-btn {
    width: calc(46px * var(--v8-dock-scale));
    height: calc(46px * var(--v8-dock-scale));
    font-size: calc(1.55rem * var(--v8-dock-scale));
  }

  .v8-platform-mac.v8-pref-dock-no-magnify .v8-taskbar-icon:hover,
  .v8-platform-ios.v8-pref-dock-no-magnify .v8-taskbar-icon:hover {
    transform: none;
  }

  .v8-pref-menubar-opaque .v8-menubar {
    background: rgba(10, 14, 22, 0.72);
    border-bottom-color: rgba(255,255,255,0.12);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .v8-platform-win.v8-pref-taskbar-left .v8-taskbar,
  .v8-platform-android.v8-pref-taskbar-left .v8-taskbar {
    justify-content: flex-start;
    gap: 10px;
    padding-left: 12px;
  }

  .v8-platform-win.v8-pref-taskbar-left .v8-taskbar-icons,
  .v8-platform-android.v8-pref-taskbar-left .v8-taskbar-icons {
    margin-right: auto;
  }

  .v8-pref-square-windows .v8-window,
  .v8-pref-square-windows .v8-start-menu,
  .v8-pref-square-windows .v8-status-panel {
    border-radius: 8px !important;
  }

  .v8-pref-start-compact .v8-start-menu {
    width: 340px;
    padding: 16px;
    gap: 12px;
  }

  .v8-pref-start-compact .v8-start-grid {
    gap: 8px;
  }

  .v8-pref-phone-search-hidden .v8-phone-search {
    display: none !important;
  }

  .v8-pref-phone-dock-compact .v8-phone-dock {
    width: min(84%, 360px);
    padding: 8px;
    gap: 10px;
  }

  .v8-pref-phone-dock-compact .v8-phone-dock .v8-taskbar-icon {
    width: 50px;
    height: 50px;
    font-size: 1.5rem;
  }

  .v8-customize-shell {
    display: grid;
    grid-template-columns: 1.05fr 0.95fr;
    gap: 16px;
  }

  .v8-customize-panel {
    padding: 14px;
    border-radius: 18px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
  }

  .v8-customize-panel h3 {
    margin: 0 0 0.85rem;
    color: #fff;
    font-size: 0.96rem;
  }

  .v8-customize-panel p {
    margin: 0 0 0.8rem;
    color: var(--v8-text-muted);
    font-size: 0.82rem;
    line-height: 1.55;
  }

  .v8-customize-grid {
    display: grid;
    gap: 12px;
  }

  .v8-customize-control {
    display: grid;
    gap: 6px;
  }

  .v8-customize-control label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    color: #fff;
    font-size: 0.84rem;
    font-weight: 600;
  }

  .v8-customize-control small {
    color: var(--v8-text-muted);
    font-size: 0.74rem;
  }

  .v8-customize-control input[type="range"],
  .v8-customize-control select {
    width: 100%;
  }

  .v8-customize-control input[type="checkbox"] {
    width: 16px;
    height: 16px;
  }

  .v8-customize-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  .v8-customize-pill {
    padding: 7px 11px;
    border-radius: 999px;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.1);
    font-size: 0.76rem;
    color: #fff;
  }

  .v8-customize-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 14px;
  }

  .v8-customize-actions .v8-soft-btn {
    min-width: 140px;
  }

  .v8-customize-hero {
    padding: 14px;
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(56, 189, 248, 0.2), rgba(255,255,255,0.03));
    border: 1px solid rgba(255,255,255,0.08);
    margin-bottom: 14px;
  }

  .v8-customize-hero strong {
    display: block;
    color: #fff;
    font-size: 1rem;
    margin-bottom: 4px;
  }

  .v8-customize-hero span {
    display: block;
    color: var(--v8-text-soft);
    font-size: 0.82rem;
    line-height: 1.55;
  }

  .v8-customize-control[data-hidden="true"],
  .v8-customize-panel[data-hidden="true"] {
    display: none !important;
  }

  .v8-customize-panel[data-v8-shared-panel="clock"],
  .v8-customize-control[data-v8-shared-control="show-seconds"] {
    display: grid !important;
  }

  .v8-desktop-icon[data-v8-app="customize"] .v8-icon-img {
    background: linear-gradient(135deg, rgba(56,189,248,0.26), rgba(255,255,255,0.1));
    border-radius: 18px;
    padding: 6px;
  }

  @media (max-width: 900px) {
    .v8-customize-shell {
      grid-template-columns: 1fr;
    }
  }


/* v1.6.155: source-level icon hover stability.
   Hover must never move desktop icons or animate their coordinates. */
.v8-desktop .v8-desktop-icon,
.v8-desktop.v8-custom-icon-layout .v8-desktop-icon {
  transform: none;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  contain: layout style paint;
  will-change: background-color, border-color, box-shadow, opacity, filter;
}
.v8-desktop .v8-desktop-icon:hover:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-desktop .v8-desktop-icon.selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-desktop .v8-desktop-icon.v8-ws-selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving) {
  transform: none !important;
}
.v8-desktop.v8-custom-icon-layout .v8-desktop-icon {
  transition: background 0.16s ease, border-color 0.16s ease, box-shadow 0.14s ease, opacity 0.14s ease, filter 0.14s ease !important;
}
.v8-desktop .v8-desktop-icon.v8-icon-dragging,
.v8-desktop .v8-desktop-icon.v8-file-dragging,
.v8-desktop .v8-desktop-icon.v8-ws-dragging,
.v8-desktop .v8-desktop-icon.v8-ws-moving {
  contain: none;
  transition: none !important;
  will-change: left, top, transform;
}

/* v1.6.179: Lucide chrome fallback discipline. Text/emoji remains visible until
   Lucide successfully replaces data-lucide nodes and the runtime marks the shell. */
.v8-control-btn .v8-lucide-fallback,
.v8-taskbar-icon .v8-lucide-fallback,
.v8-start-btn .v8-lucide-fallback,
.v8-start-search .v8-lucide-fallback,
.v8-start-avatar .v8-lucide-fallback,
.v8-start-power .v8-lucide-fallback,
.v8-phone-search .v8-lucide-fallback {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.v8-lucide-ready .v8-lucide-fallback { display: none !important; }
/* Core 1.6.1420: rendered-icon fallback guard. A later transient asset check may
   clear the global ready class while already-rendered SVGs remain in the DOM.
   Hide only the fallback adjacent to a real SVG so unavailable icons still retain text. */
.v8-control-btn > svg + .v8-lucide-fallback,
.v8-taskbar-icon > svg + .v8-lucide-fallback,
.v8-start-btn > svg + .v8-lucide-fallback,
.v8-start-search > svg + .v8-lucide-fallback,
.v8-start-avatar > svg + .v8-lucide-fallback,
.v8-start-power > svg + .v8-lucide-fallback,
.v8-phone-search > svg + .v8-lucide-fallback { display: none !important; }
.v8-control-btn svg[data-lucide],
.v8-taskbar-icon svg[data-lucide],
.v8-start-btn svg[data-lucide],
.v8-start-search svg[data-lucide],
.v8-start-avatar svg[data-lucide],
.v8-start-power svg[data-lucide],
.v8-phone-search svg[data-lucide] {
  width: 1em;
  height: 1em;
  stroke-width: 2.2;
  pointer-events: none;
}


/* ---- shell-shell-tools.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-shell-tools-style
 * v1.6.495: first-paint launcher/bridge CSS only. The full popout panel
 * CSS now lives in shell-shell-tools-panel.css and lazy-loads on intent.
 */
/* ---- v8-shell-tools-style bridge ---- */
.v8-device-desktop .v8-global-controls,
.v8-device-tablet .v8-global-controls {
  display: none !important;
}

#v8-win-start.v8-shell-tools-trigger {
  display: grid;
  overflow: hidden;
  position: relative;
}

.v8-platform-mac:not(.v8-device-phone) #v8-win-start.v8-shell-tools-trigger {
  display: grid !important;
}

#v8-win-start.v8-shell-tools-trigger::before {
  display: none !important;
}

#v8-win-start.v8-shell-tools-trigger .v8-shell-tools-logo {
  width: 22px;
  height: 22px;
  object-fit: contain;
  border-radius: 6px;
  pointer-events: none;
  filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.22));
}

.v8-platform-mac #v8-win-start.v8-shell-tools-trigger .v8-shell-tools-logo {
  width: 28px;
  height: 28px;
  border-radius: 9px;
}

.v8-shell-tools-mobile-trigger {
  width: 28px;
  height: 28px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.1);
  display: none;
  place-items: center;
  padding: 0;
  color: #fff;
  cursor: pointer;
  flex: 0 0 auto;
}

.v8-shell-tools-mobile-trigger img {
  width: 18px;
  height: 18px;
  object-fit: contain;
  border-radius: 5px;
  pointer-events: none;
}

.v8-device-phone .v8-shell-tools-mobile-trigger {
  display: grid;
}


/* v1.6.609-v1.6.611 — mobile Shell Tools launcher lives inside the native mobile controls. */
#v8-os-container.v8-device-phone .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone .v8-shell-tools-mobile-dock-icon {
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  overflow: hidden !important;
  touch-action: manipulation !important;
}
#v8-os-container.v8-device-phone .v8-shell-tools-mobile-dock-icon .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone .v8-shell-tools-mobile-dock-icon .v8-shell-tools-logo {
  width: 28px !important;
  height: 28px !important;
  object-fit: contain !important;
  border-radius: 8px !important;
  pointer-events: none !important;
  filter: drop-shadow(0 4px 10px rgba(0,0,0,0.28));
}
#v8-os-container.v8-device-phone .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  touch-action: manipulation !important;
}
#v8-os-container.v8-device-phone .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo {
  width: 22px !important;
  height: 22px !important;
  object-fit: contain !important;
  border-radius: 6px !important;
  pointer-events: none !important;
  filter: drop-shadow(0 3px 8px rgba(0,0,0,0.24));
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: grid !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
#v8-os-container.v8-device-phone.v8-platform-android .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-android-nav .v8-shell-tools-android-main {
  display: none !important;
}


/* v1.6.611 — Windows-selected mobile mode must win over the physical phone platform.
 * iPhone/Android physical classes may coexist with v8-selected-win. In that case
 * show all Android navigation buttons and keep the center MM/logo button tappable.
 */
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav button,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav button {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-selected-win.v8-platform-ios .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-selected-win.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}


/* v1.6.614 — Android-effective mobile Windows nav: show center MM/logo Shell Tools button.
 * Some mobile preference paths expose v8-platform-android while v8-selected-mac
 * is still present. Platform-android means Android nav is visible, so the center
 * Shell Tools logo must not be hidden by selected-mac/iOS rules.
 */
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-platform-ios .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo {
  display: block !important;
  width: 22px !important;
  height: 22px !important;
  object-fit: contain !important;
}

/* v1.6.616 — selected mobile family owns phone bottom chrome.
 * Fixes stale override/mixed-class states where macOS-selected mobile still
 * displayed Android navigation. Phone only: Mac => dock/taskbar, Win => Android nav.
 */
#v8-os-container.v8-device-phone.v8-selected-mac,
.v8-os-environment.v8-device-phone.v8-selected-mac {
  --v8-shell-bottom-reserve: 86px !important;
  --v8-shell-tools-mobile-bottom: 94px !important;
}
#v8-os-container.v8-device-phone.v8-selected-win,
.v8-os-environment.v8-device-phone.v8-selected-win {
  --v8-shell-bottom-reserve: 58px !important;
  --v8-shell-tools-mobile-bottom: 62px !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-phone-dock {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-android-nav,
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}



/* ---- shell-mac-dock.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-mac-dock-reorder-style
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-mac-dock-reorder-style ---- */
.v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons {
    position: relative;
  }

  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon {
    touch-action: none;
  }

  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-dock-reorder-ready {
    cursor: grab;
  }

  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-dock-dragging {
    z-index: 4;
    cursor: grabbing;
    transition: none !important;
    box-shadow:
      0 18px 34px rgba(0,0,0,0.26),
      inset 0 1px 0 rgba(255,255,255,0.24);
  }

  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-dock-dragging::before,
  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-dock-dragging::after {
    opacity: 0 !important;
  }

  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-dock-placeholder {
    opacity: 0.45;
  }

  .v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-dock-unpinned {
    display: none !important;
  }

  @keyframes v8-dock-wiggle {
    0%, 100% {
      transform: translateY(calc(var(--v8-lift, 0px))) rotate(-1.35deg) scale(var(--v8-scale, 1));
    }
    50% {
      transform: translateY(calc(var(--v8-lift, 0px) - 1px)) rotate(1.35deg) scale(var(--v8-scale, 1));
    }
  }

  .v8-platform-mac:not(.v8-device-phone).v8-dock-reordering #v8-taskbar .v8-taskbar-icon:not(.v8-dock-dragging):not(.v8-dock-unpinned) {
    animation: v8-dock-wiggle 0.18s ease-in-out infinite alternate;
    transition:
      transform 0.16s ease,
      opacity 0.16s ease,
      background 0.16s ease,
      border-color 0.16s ease;
  }

  .v8-platform-mac:not(.v8-device-phone).v8-dock-reordering #v8-taskbar .v8-taskbar-icon:nth-child(2n):not(.v8-dock-dragging):not(.v8-dock-unpinned) {
    animation-delay: 0.04s;
  }

  .v8-platform-mac:not(.v8-device-phone).v8-dock-reordering #v8-taskbar .v8-taskbar-icon:nth-child(3n):not(.v8-dock-dragging):not(.v8-dock-unpinned) {
    animation-delay: 0.09s;
  }

  .v8-dock-context-menu {
    position: fixed;
    z-index: 100006;
    min-width: 230px;
    max-width: min(300px, calc(100vw - 20px));
    display: none;
    flex-direction: column;
    gap: 4px;
    padding: 8px;
    border-radius: 16px;
    color: #fff;
    background: rgba(20, 24, 34, 0.92);
    backdrop-filter: blur(28px) saturate(180%);
    border: 1px solid rgba(255,255,255,0.14);
    box-shadow:
      0 24px 48px rgba(0,0,0,0.36),
      inset 0 1px 0 rgba(255,255,255,0.12);
  }

  .v8-dock-context-menu.active {
    display: flex;
    animation: v8-fade-in 0.14s ease forwards;
  }

  .v8-dock-context-title {
    padding: 6px 10px 4px;
    color: rgba(255,255,255,0.62);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  .v8-dock-context-divider {
    height: 1px;
    margin: 4px 0;
    background: rgba(255,255,255,0.08);
  }

  .v8-dock-context-item {
    width: 100%;
    min-height: 34px;
    padding: 8px 10px;
    border: none;
    border-radius: 11px;
    background: transparent;
    color: inherit;
    display: flex;
    align-items: center;
    gap: 10px;
    text-align: left;
    font: inherit;
    cursor: pointer;
  }

  .v8-dock-context-item:hover {
    background: rgba(255,255,255,0.1);
  }

  .v8-dock-context-item:disabled {
    opacity: 0.5;
    cursor: default;
  }

  .v8-dock-context-check {
    width: 16px;
    flex: 0 0 16px;
    text-align: center;
    color: rgba(255,255,255,0.96);
    font-weight: 800;
  }

  .v8-dock-context-label {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .v8-dock-context-meta {
    color: rgba(255,255,255,0.58);
    font-size: 0.76rem;
  }


/* ---- shell-windows-taskbar.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-win-taskbar-reorder-style
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-win-taskbar-reorder-style ---- */
.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons {
    position: relative;
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon {
    touch-action: none;
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-win-taskbar-reorder-ready {
    cursor: grab;
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-win-taskbar-dragging {
    z-index: 4;
    cursor: grabbing;
    transition: none !important;
    background: rgba(255,255,255,0.12);
    border-radius: 10px;
    box-shadow: 0 12px 24px rgba(0,0,0,0.28);
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-win-taskbar-dragging::before,
  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-win-taskbar-dragging::after {
    opacity: 0 !important;
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon.v8-win-taskbar-placeholder {
    opacity: 0.5;
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-win-taskbar-drop-indicator {
    position: absolute;
    top: 50%;
    left: 0;
    width: 3px;
    height: 28px;
    border-radius: 999px;
    opacity: 0;
    pointer-events: none;
    background: rgba(56, 189, 248, 0.98);
    box-shadow:
      0 0 0 1px rgba(255,255,255,0.18),
      0 0 14px rgba(56, 189, 248, 0.42);
    transform: translate(-50%, -50%) scaleY(0.82);
    transition:
      opacity 0.12s ease,
      left 0.12s ease,
      transform 0.12s ease;
  }

  .v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-win-taskbar-drop-indicator.active {
    opacity: 1;
    transform: translate(-50%, -50%) scaleY(1);
  }


/* ---- shell-mobile.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-responsive-hardening-style
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-responsive-hardening-style ---- */
:root {
    --v8-shell-margin: 16px;
    --v8-shell-radius: 16px;
    --v8-safe-top: env(safe-area-inset-top, 0px);
    --v8-safe-right: env(safe-area-inset-right, 0px);
    --v8-safe-bottom: env(safe-area-inset-bottom, 0px);
    --v8-safe-left: env(safe-area-inset-left, 0px);
  }

  html, body {
    min-height: 100%;
  }

  body {
    overscroll-behavior: none;
  }

  .v8-os-environment {
    width: min(100%, 1600px);
    height: var(--v8-shell-height, 88dvh) !important;
    min-height: 320px !important;
    max-height: none !important;
    margin: var(--v8-shell-margin) auto !important;
    border-radius: var(--v8-shell-radius) !important;
  }

  .v8-os-environment:fullscreen {
    height: 100dvh !important;
    margin: 0 !important;
    border-radius: 0 !important;
  }

  .v8-start-menu,
  .v8-status-panel,
  .v8-shell-tools-popout,
  .v8-context-menu {
    max-width: calc(100% - 16px);
  }

  .v8-status-panel {
    min-width: min(310px, calc(100% - 16px));
  }

  .v8-window {
    max-width: calc(100% - 12px);
    max-height: calc(100% - 12px);
  }

  .v8-device-desktop .v8-window,
  .v8-device-tablet .v8-window {
    touch-action: pan-y;
  }

  .v8-device-desktop .v8-desktop,
  .v8-device-tablet .v8-desktop {
    left: max(12px, calc(12px + var(--v8-safe-left)));
    right: max(12px, calc(12px + var(--v8-safe-right)));
    gap: 12px;
  }

  .v8-device-desktop .v8-desktop-icon,
  .v8-device-tablet .v8-desktop-icon {
    width: 88px;
  }

  .v8-start-menu {
    width: min(400px, calc(100% - 16px));
  }

  .v8-shell-tools-popout {
    width: min(360px, calc(100% - 16px));
    left: max(8px, calc(8px + var(--v8-safe-left)));
    bottom: max(64px, calc(64px + var(--v8-safe-bottom)));
  }

  .v8-device-phone .v8-mobile-topbar {
    padding-top: var(--v8-safe-top);
    height: calc(34px + var(--v8-safe-top));
  }

  .v8-platform-ios.v8-device-phone .v8-phone-dock {
    bottom: max(20px, calc(12px + var(--v8-safe-bottom)));
  }

  .v8-platform-ios.v8-device-phone .v8-ios-home-indicator {
    bottom: max(8px, calc(6px + var(--v8-safe-bottom)));
  }

  .v8-platform-android.v8-device-phone .v8-android-nav {
    bottom: max(10px, calc(8px + var(--v8-safe-bottom)));
  }

  @media (max-width: 1280px), (max-height: 860px) {
    .v8-start-menu {
      width: min(360px, calc(100% - 16px));
      padding: 16px;
    }

    .v8-status-panel {
      width: min(360px, calc(100% - 16px));
      min-width: 0;
    }

    .v8-shell-tools-popout {
      width: min(340px, calc(100% - 12px));
      padding: 12px;
      gap: 12px;
    }

    .v8-device-desktop .v8-desktop,
    .v8-device-tablet .v8-desktop {
      top: 40px;
    }
  }

  @media (max-width: 1024px), (max-height: 760px) {
    .v8-platform-mac.v8-device-desktop .v8-taskbar,
    .v8-platform-mac.v8-device-tablet .v8-taskbar {
      bottom: max(8px, calc(8px + var(--v8-safe-bottom)));
      padding: 8px 12px calc(8px + var(--v8-safe-bottom));
    }

    .v8-platform-mac.v8-device-desktop .v8-taskbar-icon,
    .v8-platform-mac.v8-device-tablet .v8-taskbar-icon {
      width: 50px;
      height: 50px;
      border-radius: 16px;
      font-size: 1.45rem;
    }

    .v8-platform-win.v8-device-desktop .v8-taskbar,
    .v8-platform-win.v8-device-tablet .v8-taskbar,
    .v8-platform-android.v8-device-tablet .v8-taskbar {
      height: 50px;
      padding-left: max(10px, calc(10px + var(--v8-safe-left)));
      padding-right: max(10px, calc(10px + var(--v8-safe-right)));
    }

    .v8-device-desktop .v8-window,
    .v8-device-tablet .v8-window {
      min-width: 280px;
      min-height: 220px;
    }
  }

  @media (max-width: 860px), (max-height: 680px) {
    .v8-device-desktop .v8-desktop-icon,
    .v8-device-tablet .v8-desktop-icon {
      width: 78px;
      padding: 8px 4px;
    }

    .v8-device-desktop .v8-icon-img,
    .v8-device-tablet .v8-icon-img {
      font-size: 1.9rem;
    }

    .v8-device-desktop .v8-icon-text,
    .v8-device-tablet .v8-icon-text {
      font-size: 0.72rem;
    }

    .v8-shell-tools-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (hover: none), (pointer: coarse) {
    .v8-control-chip,
    .v8-status-trigger,
    .v8-panel-close,
    .v8-panel-action,
    .v8-soft-btn,
    .v8-calendar-controls button,
    .v8-shell-tools-action,
    .v8-shell-tools-close {
      min-height: 44px;
    }

    .v8-taskbar-icon,
    .v8-start-btn {
      min-width: 44px;
      min-height: 44px;
    }

    .v8-device-phone .v8-desktop-icon {
      max-width: none;
    }
  }

  @media (max-width: 640px) {
    .v8-device-desktop .v8-status-panel,
    .v8-device-tablet .v8-status-panel,
    .v8-device-desktop .v8-start-menu,
    .v8-device-tablet .v8-start-menu,
    .v8-device-desktop .v8-shell-tools-popout,
    .v8-device-tablet .v8-shell-tools-popout {
      width: calc(100% - 12px) !important;
      max-width: calc(100% - 12px) !important;
      left: 6px !important;
      right: 6px !important;
      transform: none !important;
    }

    .v8-device-desktop .v8-start-menu,
    .v8-device-tablet .v8-start-menu {
      bottom: 58px;
    }

    .v8-device-desktop .v8-desktop,
    .v8-device-tablet .v8-desktop {
      left: 8px;
      right: 8px;
      gap: 8px;
    }
  }

  html.v8-shell-is-resizing .v8-taskbar,
  html.v8-shell-is-resizing .v8-taskbar-icon,
  html.v8-shell-is-resizing .v8-start-btn,
  html.v8-shell-is-resizing .v8-start-menu,
  html.v8-shell-is-resizing .v8-status-panel,
  html.v8-shell-is-resizing .v8-shell-tools-popout,
  html.v8-shell-is-resizing .v8-window {
    transition: none !important;
    animation: none !important;
  }

  .v8-taskbar {
    contain: layout paint;
    backface-visibility: hidden;
    transform: translateZ(0);
  }

/* v1.6.604 — mobile bottom-control mapping correction.
 * Phone shells intentionally derive from the selected desktop family:
 * - Windows-selected phone => Android-style mobile navigation.
 * - macOS-selected phone => iOS/macOS phone dock/taskbar.
 * Do not force the desktop Windows taskbar onto phones.
 */
#v8-os-container.v8-device-phone.v8-selected-mac,
#v8-os-container.v8-device-phone.v8-platform-ios {
  --v8-shell-bottom-reserve: 86px;
}

#v8-os-container.v8-device-phone.v8-selected-win,
#v8-os-container.v8-device-phone.v8-platform-android {
  --v8-shell-bottom-reserve: 58px;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: calc(12px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  width: min(94vw, 380px) !important;
  min-height: 58px !important;
  padding: 7px 9px !important;
  box-sizing: border-box !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 8px !important;
  border-radius: 22px !important;
  transform: translateX(-50%) translateZ(0) !important;
  z-index: 100600 !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-taskbar-icon,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock .v8-taskbar-icon {
  flex: 0 0 44px !important;
  width: 44px !important;
  min-width: 44px !important;
  height: 44px !important;
  border-radius: 14px !important;
  font-size: 1.35rem !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac #v8-taskbar,
#v8-os-container.v8-device-phone.v8-platform-ios #v8-taskbar,
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-android-nav {
  display: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win #v8-taskbar,
#v8-os-container.v8-device-phone.v8-platform-android #v8-taskbar,
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-platform-android .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-selected-win .v8-mobile-page-dots,
#v8-os-container.v8-device-phone.v8-platform-android .v8-mobile-page-dots,
#v8-os-container.v8-device-phone.v8-selected-win .v8-ios-home-indicator,
#v8-os-container.v8-device-phone.v8-platform-android .v8-ios-home-indicator {
  display: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: calc(8px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  width: min(88vw, 320px) !important;
  height: 42px !important;
  min-height: 42px !important;
  padding: 4px 10px !important;
  box-sizing: border-box !important;
  justify-content: center !important;
  align-items: center !important;
  gap: clamp(22px, 12vw, 42px) !important;
  border-radius: 999px !important;
  background: rgba(10, 14, 22, 0.78) !important;
  border: 1px solid rgba(255,255,255,0.12) !important;
  box-shadow: 0 12px 28px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.08) !important;
  transform: translateX(-50%) translateZ(0) !important;
  z-index: 100600 !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav button,
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav button {
  display: grid !important;
  place-items: center !important;
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  border-radius: 999px !important;
  padding: 0 !important;
  flex: 0 0 44px !important;
}

#v8-os-container.v8-device-phone .v8-window,
#v8-os-container.v8-device-phone .v8-window.maximized,
.v8-os-environment.v8-device-phone .v8-window,
.v8-os-environment.v8-device-phone .v8-window.maximized {
  top: calc(34px + env(safe-area-inset-top, 0px)) !important;
  height: calc(var(--v8-viewport-height, 100dvh) - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-bottom, 0px) - var(--v8e-shell-bottom-offset, 0px)) !important;
  max-height: calc(var(--v8-viewport-height, 100dvh) - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-bottom, 0px) - var(--v8e-shell-bottom-offset, 0px)) !important;
  bottom: auto !important;
}



/* v1.6.605 — mobile theme/customization access regression fix.
 * Keep a tiny Mac/Win theme toggle visible in the phone topbar while preserving
 * the intended mapping: Mac -> iOS/macOS dock, Windows -> Android nav.
 */
#v8-os-container.v8-device-phone .v8-mobile-topbar,
.v8-os-environment.v8-device-phone .v8-mobile-topbar {
  z-index: 100650 !important;
}
#v8-os-container.v8-device-phone .v8-mobile-topbar-left,
.v8-os-environment.v8-device-phone .v8-mobile-topbar-left {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-width: 0 !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle,
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  min-height: 24px !important;
  height: 24px !important;
  padding: 0 8px !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
  border-radius: 999px !important;
  background: rgba(9,14,24,0.56) !important;
  color: #fff !important;
  font-size: 0.72rem !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  box-shadow: 0 6px 14px rgba(0,0,0,0.22) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"],
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"] {
  background: rgba(37,99,235,0.72) !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"],
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"] {
  background: rgba(15,23,42,0.62) !important;
}
#v8-os-container.v8-device-phone .v8-shell-tools-mobile-trigger,
.v8-os-environment.v8-device-phone .v8-shell-tools-mobile-trigger {
  width: 26px !important;
  height: 26px !important;
  min-width: 26px !important;
  min-height: 26px !important;
}
@media (max-width: 374px) {
  #v8-os-container.v8-device-phone .v8-mobile-theme-label,
  .v8-os-environment.v8-device-phone .v8-mobile-theme-label { display: none !important; }
  #v8-os-container.v8-device-phone .v8-mobile-theme-toggle,
  .v8-os-environment.v8-device-phone .v8-mobile-theme-toggle { width: 26px !important; padding: 0 !important; }
}




/* v1.6.614 — Android-effective mobile Windows nav: show center MM/logo Shell Tools button.
 * Some mobile preference paths expose v8-platform-android while v8-selected-mac
 * is still present. Platform-android means Android nav is visible, so the center
 * Shell Tools logo must not be hidden by selected-mac/iOS rules.
 */
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-platform-ios .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo {
  display: block !important;
  width: 22px !important;
  height: 22px !important;
  object-fit: contain !important;
}

/* v1.6.616 — selected mobile family owns phone bottom chrome.
 * Fixes stale override/mixed-class states where macOS-selected mobile still
 * displayed Android navigation. Phone only: Mac => dock/taskbar, Win => Android nav.
 */
#v8-os-container.v8-device-phone.v8-selected-mac,
.v8-os-environment.v8-device-phone.v8-selected-mac {
  --v8-shell-bottom-reserve: 86px !important;
  --v8-shell-tools-mobile-bottom: 94px !important;
}
#v8-os-container.v8-device-phone.v8-selected-win,
.v8-os-environment.v8-device-phone.v8-selected-win {
  --v8-shell-bottom-reserve: 58px !important;
  --v8-shell-tools-mobile-bottom: 62px !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-phone-dock {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-android-nav,
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

/* v1.6.996: the 44px coarse-pointer touch target belongs to mobile/tablet buttons,
   not to desktop macOS menubar status pills. shell-macos.css carries the late
   authoritative rule; this keeps the mobile profile self-documenting. */
@media (hover: none), (pointer: coarse) {
  .v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger,
  .v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger {
    height: 24px !important;
    min-height: 0 !important;
    max-height: 24px !important;
  }
}



/* ---- shell-wordpress-compat.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-wordpress-compat-style
 * Front-end WordPress admin toolbar and shell drag compatibility.
 * v1.6.1089: Admin-toolbar internals are deliberately untouched.
 */
:root {
  --v8e-wp-adminbar-offset: 0px;
  --v8e-wp-adminbar-fallback-offset: 32px;
}

body.v8e-wp-adminbar-enabled,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled),
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) {
  --v8e-wp-adminbar-offset: var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px));
}

body.v8e-core-fullscreen-shell.v8e-wp-adminbar-enabled,
html.v8e-core-fullscreen-html.wp-toolbar,
html.v8e-core-fullscreen-html,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled),
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) {
  margin-top: 0 !important;
  padding-top: 0 !important;
  top: 0 !important;
  transform: none !important;
}

/* v1.6.1089: outer-only WordPress admin toolbar guard.
 * Virii8 must not style #wpadminbar internals. WordPress admin-bar.css owns
 * #wp-toolbar, .quicklinks, .ab-top-menu, .ab-item, icons, labels, and submenu
 * layout. Virii8 only anchors the already-rendered toolbar and offsets the
 * fullscreen shell below the measured bar height. */
#wpadminbar {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  min-width: 0 !important;
  margin-top: 0 !important;
  padding-top: 0 !important;
  transform: none !important;
  z-index: 2147483600 !important;
  overflow: visible !important;
  pointer-events: auto !important;
}

body.v8e-wp-adminbar-enabled #v8e-core-fullscreen-shell-root,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-os-environment,
body.v8e-wp-adminbar-enabled .v8-os-environment,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8e-core-fullscreen-shell-root,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8e-core-fullscreen-shell-root,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-os-environment,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-os-environment,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) .v8-os-environment,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) .v8-os-environment {
  position: fixed !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  top: var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) !important;
  height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)))) !important;
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)))) !important;
  min-height: 0 !important;
}

body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  top: 0 !important;
  z-index: 2147482500 !important;
}

body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-desktop,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop {
  top: max(44px, calc(var(--v8-macos-menubar-height, 36px) + 8px)) !important;
}

.v8-window-header,
.v8-resizer,
.v8-desktop-icon,
.v8-user-file-icon,
.v8-taskbar-icon {
  touch-action: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}

.v8-window.v8-wp-drag-active,
.v8-window.v8-wp-resize-active {
  transition: none !important;
}

body.v8e-wp-adminbar-enabled #v8e-admin-panel,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8e-admin-panel,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8e-admin-panel {
  top: calc(var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) + 10px + env(safe-area-inset-top, 0px)) !important;
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) - var(--v8e-admin-panel-safe-bottom, var(--v8e-admin-panel-bottom-reserve, 74px)) - env(safe-area-inset-top, 0px) - 20px) !important;
  z-index: 2147483500 !important;
}

@media screen and (max-width: 782px) {
  :root,
  body.v8e-wp-adminbar-enabled,
  body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled),
  html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) {
    --v8e-wp-adminbar-fallback-offset: 46px;
  }
}

/* WordPress owns #wpadminbar descendants. Virii8 only anchors the outer bar and offsets the shell. */



/* ---- shell-viewport-bus.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: viewport/safe-area bus guards.
 * JS measures the active shell chrome and publishes the variables below.
 */
:root {
  --v8-viewport-width: 100vw;
  --v8-viewport-height: 100dvh;
  --v8-shell-container-width: 100vw;
  --v8-shell-container-height: 100dvh;
  --v8-shell-top-reserve: 0px;
  --v8-shell-bottom-reserve: 74px;
  --v8e-admin-tools-anchor-bottom: 74px;
  --v8-shell-usable-top: var(--v8-shell-top-reserve, 0px);
  --v8-shell-usable-bottom: calc(var(--v8-shell-container-height, 100dvh) - var(--v8-shell-bottom-reserve, 74px));
  --v8-shell-usable-height: calc(var(--v8-shell-container-height, 100dvh) - var(--v8-shell-top-reserve, 0px) - var(--v8-shell-bottom-reserve, 74px));
}

#v8-os-container.v8-os-environment,
.v8-os-environment {
  --v8-shell-bottom-reserve: 74px;
  --v8e-admin-tools-anchor-bottom: 74px;
  --v8-shell-top-reserve: 0px;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone),
#v8-os-container.v8-platform-ios:not(.v8-device-phone),
.v8-os-environment.v8-platform-mac:not(.v8-device-phone),
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) {
  --v8-shell-bottom-reserve: 112px;
  --v8e-admin-tools-anchor-bottom: 112px;
  --v8-shell-top-reserve: var(--v8-macos-menubar-height, 36px);
}

#v8-os-container.v8-platform-win:not(.v8-device-phone),
#v8-os-container.v8-platform-android:not(.v8-device-phone),
.v8-os-environment.v8-platform-win:not(.v8-device-phone),
.v8-os-environment.v8-platform-android:not(.v8-device-phone) {
  --v8-shell-bottom-reserve: 62px;
  --v8e-admin-tools-anchor-bottom: 62px;
}

#v8-os-container.v8-device-phone.v8-selected-mac,
#v8-os-container.v8-device-phone.v8-platform-ios,
.v8-os-environment.v8-device-phone.v8-selected-mac,
.v8-os-environment.v8-device-phone.v8-platform-ios {
  --v8-shell-bottom-reserve: 104px;
  --v8e-admin-tools-anchor-bottom: 104px;
}

#v8-os-container.v8-device-phone.v8-selected-win,
#v8-os-container.v8-device-phone.v8-platform-android,
.v8-os-environment.v8-device-phone.v8-selected-win,
.v8-os-environment.v8-device-phone.v8-platform-android {
  --v8-shell-bottom-reserve: 78px;
  --v8e-admin-tools-anchor-bottom: 78px;
}

#v8-os-container:not(.v8-device-phone) .v8-desktop,
.v8-os-environment:not(.v8-device-phone) .v8-desktop {
  bottom: max(72px, calc(var(--v8-shell-bottom-reserve, 74px) + 8px)) !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-desktop,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop {
  top: max(44px, calc(var(--v8-shell-top-reserve, var(--v8-macos-menubar-height, 36px)) + 8px)) !important;
  bottom: max(102px, calc(var(--v8-shell-bottom-reserve, 112px) + 6px)) !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-desktop,
#v8-os-container.v8-platform-android:not(.v8-device-phone) .v8-desktop,
.v8-os-environment.v8-platform-win:not(.v8-device-phone) .v8-desktop,
.v8-os-environment.v8-platform-android:not(.v8-device-phone) .v8-desktop {
  bottom: max(68px, calc(var(--v8-shell-bottom-reserve, 62px) + 10px)) !important;
}

#v8-os-container.v8-device-phone .v8-desktop,
.v8-os-environment.v8-device-phone .v8-desktop {
  bottom: max(98px, calc(var(--v8-shell-bottom-reserve, 78px) + 12px)) !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-desktop,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-desktop,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-desktop,
.v8-os-environment.v8-device-phone.v8-platform-ios .v8-desktop {
  bottom: max(126px, calc(var(--v8-shell-bottom-reserve, 104px) + 14px)) !important;
}

/*
 * Admin/debug floating buttons use a stable platform anchor, not the live
 * measured reserve. This prevents jitter when the viewport bus re-measures
 * taskbar/dock chrome during browser UI, adminbar, or orientation changes.
 */
#v8-os-container .v8-start-menu,
#v8-os-container .v8-status-panel,
#v8-os-container .v8-shell-tools-popout,
#v8-os-container .v8-context-menu,
#v8-os-container .v8e-context-menu,
.v8-os-environment .v8-start-menu,
.v8-os-environment .v8-status-panel,
.v8-os-environment .v8-shell-tools-popout,
.v8-os-environment .v8-context-menu,
.v8-os-environment .v8e-context-menu {
  max-height: max(160px, calc(var(--v8-shell-usable-height, 70dvh) - 12px));
}

#v8-os-container .v8-window.maximized,
.v8-os-environment .v8-window.maximized {
  top: var(--v8-shell-usable-top, 0px) !important;
  height: var(--v8-shell-usable-height, calc(100% - var(--v8-shell-bottom-reserve, 74px))) !important;
}

#v8-os-container.v8-device-phone .v8-window,
#v8-os-container.v8-device-phone .v8-window.maximized,
.v8-os-environment.v8-device-phone .v8-window,
.v8-os-environment.v8-device-phone .v8-window.maximized {
  top: max(34px, var(--v8-shell-usable-top, 34px)) !important;
  height: max(220px, calc(var(--v8-shell-usable-height, 100dvh) - 34px)) !important;
}


/* v1.6.704: viewport-bounded snapped windows and floating panels. */
#v8-os-container .v8-window.v8-snapped-left,
#v8-os-container .v8-window.v8-snapped-right,
.v8-os-environment .v8-window.v8-snapped-left,
.v8-os-environment .v8-window.v8-snapped-right {
  top: var(--v8-shell-usable-top, 0px) !important;
  height: var(--v8-shell-usable-height, calc(100% - var(--v8-shell-bottom-reserve, 74px))) !important;
  max-height: var(--v8-shell-usable-height, calc(100% - var(--v8-shell-bottom-reserve, 74px))) !important;
  bottom: auto !important;
}

#v8-os-container .v8-window.v8-snapped-left,
.v8-os-environment .v8-window.v8-snapped-left {
  left: 0 !important;
  width: calc(var(--v8-shell-container-width, 100vw) / 2) !important;
}

#v8-os-container .v8-window.v8-snapped-right,
.v8-os-environment .v8-window.v8-snapped-right {
  left: calc(var(--v8-shell-container-width, 100vw) / 2) !important;
  width: calc(var(--v8-shell-container-width, 100vw) / 2) !important;
}

#v8-os-container .v8-window:not(.maximized):not(.minimized),
.v8-os-environment .v8-window:not(.maximized):not(.minimized) {
  max-width: calc(var(--v8-shell-container-width, 100vw) - 16px);
  max-height: var(--v8-shell-usable-height, calc(100dvh - var(--v8-shell-bottom-reserve, 74px)));
}

#v8-os-container .v8-start-menu.active,
#v8-os-container .v8-status-panel.active,
#v8-os-container .v8-shell-tools-popout.active,
.v8-os-environment .v8-start-menu.active,
.v8-os-environment .v8-status-panel.active,
.v8-os-environment .v8-shell-tools-popout.active {
  max-height: max(180px, calc(var(--v8-shell-usable-height, 70dvh) - 16px));
  overflow: auto;
  overscroll-behavior: contain;
}

/* v1.6.704: admin/debug overlays use their own stable overlay anchor;
 * do not make them ride the live viewport bottom-reserve measurement. */
#v8e-debug-panel[data-v8-no-surface-autoclamp="1"],
#v8e-admin-panel[data-v8-no-surface-autoclamp="1"] {
  will-change: auto;
}


/* ---- shell-public-desktop.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-public-desktop-window-patch
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-public-desktop-window-patch ---- */
.v8-public-window {
    box-sizing: border-box;
    max-width: 980px;
    margin: 0 auto;
    padding: clamp(18px, 3vw, 32px);
    color: var(--v8-text, #eef6ff);
    line-height: 1.55;
  }
  .v8-public-window h2 {
    margin: 0 0 0.8rem;
    color: #fff;
    font-size: clamp(1.35rem, 2.8vw, 2.1rem);
    line-height: 1.15;
  }
  .v8-public-window p {
    margin: 0.7rem 0;
    color: var(--v8-text-muted, rgba(236,246,255,.76));
  }
  .v8-public-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.15rem;
  }
  .v8-public-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0.65rem 1rem;
    border-radius: 12px;
    border: 1px solid rgba(0,255,120,.36);
    background: rgba(0,255,90,.16);
    color: #f6fff8 !important;
    font-weight: 800;
    text-decoration: none !important;
    box-shadow: 0 12px 34px rgba(0,0,0,.22);
  }
  .v8-public-btn:hover,
  .v8-public-btn:focus-visible {
    background: rgba(0,255,90,.25);
    transform: translateY(-1px);
  }
  .v8-public-btn-secondary {
    border-color: rgba(255,255,255,.18);
    background: rgba(255,255,255,.08);
  }

/* v1.6.928: public desktop contact CTA emphasis. */
.v8-public-btn.v8-public-btn-contact-primary {
  min-height: 46px;
  padding: 0.78rem 1.2rem;
  border-radius: 14px;
  font-size: 1.03rem;
  font-weight: 900;
  letter-spacing: .01em;
  box-shadow: 0 16px 38px rgba(0,0,0,.28), 0 0 22px rgba(34,197,94,.18);
}

@media (max-width: 520px) {
  .v8-public-btn.v8-public-btn-contact-primary {
    width: 100%;
  }
}


/* v1.6.929: richer public product-tour content blocks. */
.v8-public-window-rich {
  padding-bottom: clamp(22px, 4vw, 42px);
}
.v8-public-window .v8-public-lead {
  color: rgba(255,255,255,.92);
  font-size: clamp(1rem, 1.55vw, 1.14rem);
  line-height: 1.7;
  margin: 0 0 1rem;
}
.v8-public-section {
  margin-top: 1rem;
  padding-top: .85rem;
  border-top: 1px solid rgba(255,255,255,.10);
}
.v8-public-section h3 {
  margin: 0 0 .62rem;
  color: rgba(255,255,255,.96);
  font-size: clamp(1.02rem, 1.7vw, 1.22rem);
  line-height: 1.25;
}
.v8-public-feature-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: .72rem;
  margin: .75rem 0 .35rem;
}
.v8-public-feature {
  display: flex;
  flex-direction: column;
  gap: .28rem;
  padding: .78rem .82rem;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(255,255,255,.075), rgba(255,255,255,.035));
  box-shadow: 0 12px 28px rgba(0,0,0,.16);
}
.v8-public-feature strong {
  color: #fff;
  font-size: .94rem;
  letter-spacing: .01em;
}
.v8-public-feature span {
  color: var(--v8-text-muted, rgba(236,246,255,.76));
  font-size: .91rem;
  line-height: 1.48;
}
.v8-public-mini-list,
.v8-public-workflow {
  margin: .65rem 0 .2rem 1.25rem;
  padding: 0;
  color: var(--v8-text-muted, rgba(236,246,255,.78));
  line-height: 1.55;
}
.v8-public-mini-list li,
.v8-public-workflow li {
  margin: .32rem 0;
  padding-left: .15rem;
}
.v8-public-workflow li::marker {
  color: rgba(52,211,153,.92);
  font-weight: 900;
}
.v8-public-note {
  margin-top: .85rem;
  padding: .72rem .82rem;
  border-left: 4px solid rgba(52,211,153,.85);
  border-radius: 12px;
  background: rgba(52,211,153,.10);
  color: rgba(255,255,255,.88) !important;
}
@media (max-width: 640px) {
  .v8-public-feature-grid {
    grid-template-columns: 1fr;
  }
  .v8-public-window .v8-public-lead {
    font-size: 1rem;
  }
}

/* v1.6.930: enterprise-depth public product tour refinements. */
.v8-public-window-enterprise {
  max-width: 1080px;
}
.v8-public-window-enterprise .v8-public-section {
  margin-top: 1.15rem;
  padding-top: 1rem;
}
.v8-public-window-enterprise .v8-public-feature-grid {
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: .82rem;
}
.v8-public-window-enterprise .v8-public-feature {
  min-height: 118px;
}
.v8-public-window-enterprise .v8-public-mini-list {
  column-width: 240px;
  column-gap: 1.2rem;
}
.v8-public-window-enterprise .v8-public-actions {
  position: sticky;
  bottom: 0;
  z-index: 1;
  margin-top: 1.35rem;
  padding: .85rem 0 .15rem;
  background: linear-gradient(180deg, rgba(5,10,18,0), rgba(5,10,18,.82) 35%, rgba(5,10,18,.94));
  backdrop-filter: blur(10px);
}
@media (max-width: 720px) {
  .v8-public-window-enterprise .v8-public-mini-list {
    column-width: auto;
    columns: 1;
  }
  .v8-public-window-enterprise .v8-public-feature {
    min-height: 0;
  }
  .v8-public-window-enterprise .v8-public-actions {
    position: static;
    background: transparent;
    backdrop-filter: none;
  }
}


/* ---- shell-app-windows.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-module-desktop-window-patch
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-module-desktop-window-patch ---- */
html,
  body {
    width: 100%;
    height: 100dvh !important;
    min-height: 100dvh !important;
    overflow: hidden !important;
  }

  html,
  body {
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
  }

  #v8-os-container.v8-os-environment {
    --v8e-shell-bottom-offset: 0px;
    position: fixed !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100dvh !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
  }

  #v8-os-container .v8-desktop {
    padding-bottom: max(0px, env(safe-area-inset-bottom, 0px));
  }

  #v8-os-container.v8-device-phone .v8-desktop,
  #v8-os-container.v8-device-phone .v8-desktop.v8-custom-icon-layout {
    display: grid !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    scrollbar-width: none;
    padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
    touch-action: pan-y;
  }

  #v8-os-container.v8-device-phone .v8-desktop::-webkit-scrollbar {
    display: none;
  }

  #v8-os-container.v8-device-phone .v8-mobile-page-dots {
    display: none !important;
  }

  #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-taskbar,
  #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-taskbar {
    position: absolute !important;
    left: 50% !important;
    right: auto !important;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
    max-width: calc(100vw - 28px) !important;
    transform: translateX(-50%) !important;
  }

  #v8-os-container .v8-taskbar,
  #v8-os-container .v8-phone-dock {
    z-index: 100500 !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-taskbar,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) .v8-taskbar {
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    bottom: var(--v8e-shell-bottom-offset, 0px) !important;
    width: 100% !important;
    height: calc(56px + env(safe-area-inset-bottom, 0px)) !important;
    padding-bottom: env(safe-area-inset-bottom, 0px) !important;
    box-sizing: border-box !important;
    transform: none !important;
  }

  #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
  #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-desktop {
    bottom: calc(118px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-desktop,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) .v8-desktop {
    bottom: calc(72px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  }


  /* v1.6.692: admin-controlled public Windows taskbar/mobile safe-zone.
     Manual clearance affects public desktop Windows and Windows-selected public mobile.
     Automatic device-safe correction affects public mobile only. */
  .v8e-public-windows-taskbar-margin-enabled,
  .v8e-public-windows-mobile-safe-enabled {
    --v8e-public-windows-taskbar-effective-bottom-offset: calc(var(--v8e-public-windows-taskbar-bottom-offset, 0px) + var(--v8e-public-windows-taskbar-device-safe-offset, 0px));
  }

  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-taskbar,
  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar {
    bottom: var(--v8e-public-windows-taskbar-bottom-offset, 0px) !important;
  }

  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-desktop {
    bottom: calc(72px + env(safe-area-inset-bottom, 0px) + var(--v8e-public-windows-taskbar-bottom-offset, 0px)) !important;
  }

  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-start-menu {
    bottom: calc(64px + var(--v8e-public-windows-taskbar-bottom-offset, 0px)) !important;
  }

  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav,
  .v8e-public-windows-mobile-safe-enabled #v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
  .v8e-public-windows-mobile-safe-enabled #v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav {
    bottom: calc(8px + env(safe-area-inset-bottom, 0px) + var(--v8e-public-windows-taskbar-effective-bottom-offset, 0px)) !important;
  }

  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-device-phone.v8-selected-win .v8-desktop,
  .v8e-public-windows-taskbar-margin-enabled #v8-os-container.v8-device-phone.v8-platform-android .v8-desktop,
  .v8e-public-windows-mobile-safe-enabled #v8-os-container.v8-device-phone.v8-selected-win .v8-desktop,
  .v8e-public-windows-mobile-safe-enabled #v8-os-container.v8-device-phone.v8-platform-android .v8-desktop {
    bottom: calc(98px + env(safe-area-inset-bottom, 0px) + var(--v8e-public-windows-taskbar-effective-bottom-offset, 0px)) !important;
  }

  #v8-os-container.v8-device-phone .v8-phone-dock {
    bottom: calc(18px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  }

  #v8-os-container.v8-device-phone .v8-android-nav {
    bottom: env(safe-area-inset-bottom, 0px) !important;
  }

  .v8-module-app-icon .v8-icon-img {
    background: linear-gradient(180deg, rgba(56,189,248,0.24), rgba(34,197,94,0.16));
    border: 1px solid rgba(255,255,255,0.14);
    width: 54px;
    height: 54px;
    border-radius: 17px;
    display: grid;
    place-items: center;
  }

  .v8-device-phone .v8-module-app-icon .v8-icon-img {
    width: 62px;
    height: 62px;
  }

  .v8-module-window .v8-window-body {
    padding: 0 !important;
    background: #050806;
  }

  .v8-module-window-shell {
    min-height: 100%;
    background: #050806;
    color: var(--v8-text-main, #f8fafc);
    line-height: 1.45;
    user-select: text;
  }

  .v8-module-window-loading,
  .v8-module-window-error {
    padding: 24px;
    color: #dbeafe;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  }

  .v8-module-window-error {
    color: #fecaca;
  }

  .v8-module-window-shell a {
    color: #38bdf8;
  }

  #v8-os-container .v8-module-app-icon {
    z-index: 12;
    pointer-events: auto;
  }

  #v8-os-container .v8-module-app-empty {
    opacity: .82;
    cursor: help;
  }


  /* v1.6.236: shell-owned module fullscreen for inline apps such as Notes OS.
     This is intentionally controlled by the shell, not by browser-native fullscreen,
     so it works inside the Virii8 desktop/window runtime and cache-safe app renderer. */
  #v8-os-container .v8-window.v8-module-window-fullscreen {
    position: absolute !important;
    inset: 0 !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    border-radius: 0 !important;
    transform: none !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    z-index: 2147482000 !important;
  }

  #v8-os-container.v8-module-window-fullscreen-active {
    overflow: hidden !important;
  }

  #v8-os-container .v8-window.v8-module-window-fullscreen .v8-window-header,
  #v8-os-container .v8-window.v8-module-window-fullscreen .v8-resizer {
    display: none !important;
  }

  #v8-os-container .v8-window.v8-module-window-fullscreen .v8-window-body,
  #v8-os-container .v8-window.v8-module-window-fullscreen .v8-module-window-shell,
  #v8-os-container .v8-window.v8-module-window-fullscreen .v8-window-content {
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
  }

  #v8-os-container .v8-window.v8-module-window-fullscreen .v8-module-window-shell > *:first-child {
    min-height: 100% !important;
  }

/* v1.6.240: Notes OS is a high-motion canvas/editor surface.
   Restored windows must not use shell glass/backdrop sampling around it;
   browser fullscreen was smooth because it escaped these effects. */
#v8-os-container .v8-window.v8e-notes-os-window-host,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"] {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  background: #050806 !important;
  opacity: 1 !important;
  filter: none !important;
  box-shadow: 0 12px 30px rgba(0,0,0,0.42) !important;
  transition: none !important;
  animation: none !important;
  contain: layout paint style !important;
  isolation: isolate !important;
}

#v8-os-container .v8-window.v8e-notes-os-window-host.v8-focused,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"].v8-focused {
  box-shadow: 0 14px 34px rgba(0,0,0,0.46) !important;
}

#v8-os-container .v8-window.v8e-notes-os-window-host.v8-inactive,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"].v8-inactive {
  opacity: 1 !important;
  filter: none !important;
}

#v8-os-container .v8-window.v8e-notes-os-window-host .v8-window-header,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"] .v8-window-header {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  background: #090c0a !important;
  transition: none !important;
}

#v8-os-container .v8-window.v8e-notes-os-window-host .v8-window-header::after,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"] .v8-window-header::after {
  display: none !important;
}

#v8-os-container .v8-window.v8e-notes-os-window-host .v8-window-body,
#v8-os-container .v8-window.v8e-notes-os-window-host .v8-module-window-shell,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"] .v8-window-body,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"] .v8-module-window-shell {
  overflow: hidden !important;
  height: 100% !important;
  min-height: 0 !important;
  background: #050806 !important;
  contain: layout paint style !important;
}

#v8-os-container .v8-window.v8e-notes-os-window-host .v8-module-window-shell > #tn-wrapper,
#v8-os-container .v8-window.v8e-high-motion-surface[data-v8-high-motion-surface="notes-os"] .v8-module-window-shell > #tn-wrapper {
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
}

/* Public desktop: make the safe Contact Us launcher obvious without changing private workspace icons. */
#v8-os-container .v8-module-app-icon.v8-public-contact-icon {
  width: 104px;
  padding-top: 12px;
  padding-bottom: 12px;
  filter: drop-shadow(0 0 20px rgba(56, 189, 248, .44));
}

#v8-os-container .v8-module-app-icon.v8-public-contact-icon .v8-icon-img {
  width: 62px;
  height: 62px;
  font-size: 2.35rem;
  box-shadow: 0 0 0 3px rgba(56, 189, 248, .36), 0 0 26px rgba(34, 197, 94, .44);
  transform: scale(1.08);
  animation: v8-contact-public-pulse 2.6s ease-in-out infinite;
}

#v8-os-container .v8-module-app-icon.v8-public-contact-icon .v8-icon-text {
  font-weight: 900;
  letter-spacing: .02em;
  text-shadow: 0 2px 12px rgba(15, 23, 42, .78), 0 0 14px rgba(56, 189, 248, .38);
}

@keyframes v8-contact-public-pulse {
  0%, 100% { transform: scale(1.06); }
  50% { transform: scale(1.13); }
}

@media (prefers-reduced-motion: reduce) {
  #v8-os-container .v8-module-app-icon.v8-public-contact-icon .v8-icon-img { animation: none; }
}


/* v1.6.991: Recycle Bin desktop icon empty/full state and count badge. */
.v8-module-app-icon.v8-recycle-bin-app-icon .v8-recycle-bin-icon-wrap {
  position: relative;
  overflow: visible;
  background: linear-gradient(180deg, rgba(148,163,184,0.24), rgba(15,23,42,0.34));
  border-color: rgba(226,232,240,0.22);
}
.v8-module-app-icon.v8-recycle-bin-full .v8-recycle-bin-icon-wrap {
  background: linear-gradient(180deg, rgba(56,189,248,0.28), rgba(245,158,11,0.18));
  border-color: rgba(251,191,36,0.38);
  box-shadow: 0 0 0 1px rgba(251,191,36,0.12), 0 10px 28px rgba(0,0,0,0.22);
}
.v8-recycle-bin-icon {
  position: relative;
  width: 36px;
  height: 40px;
  display: inline-block;
  transform: translateY(1px);
}
.v8-recycle-bin-lid {
  position: absolute;
  left: 6px;
  top: 3px;
  width: 24px;
  height: 5px;
  border-radius: 5px 5px 2px 2px;
  background: rgba(226,232,240,0.95);
  box-shadow: inset 0 -1px 0 rgba(15,23,42,0.34);
}
.v8-recycle-bin-lid:before {
  content: "";
  position: absolute;
  left: 8px;
  top: -4px;
  width: 8px;
  height: 4px;
  border-radius: 4px 4px 0 0;
  background: rgba(226,232,240,0.92);
}
.v8-recycle-bin-body {
  position: absolute;
  left: 7px;
  top: 10px;
  width: 22px;
  height: 27px;
  border-radius: 3px 3px 7px 7px;
  border: 2px solid rgba(226,232,240,0.95);
  background: linear-gradient(180deg, rgba(15,23,42,0.22), rgba(15,23,42,0.08));
  box-shadow: inset 6px 0 0 rgba(226,232,240,0.14), inset -6px 0 0 rgba(226,232,240,0.1);
  overflow: hidden;
}
.v8-recycle-bin-icon.is-full .v8-recycle-bin-body {
  background: linear-gradient(180deg, rgba(251,191,36,0.32), rgba(56,189,248,0.12));
}
.v8-recycle-bin-paper {
  position: absolute;
  display: block;
  background: rgba(255,255,255,0.92);
  border-radius: 2px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.16);
}
.v8-recycle-bin-paper.p1 { width: 10px; height: 7px; left: 2px; top: 5px; transform: rotate(-13deg); }
.v8-recycle-bin-paper.p2 { width: 8px; height: 9px; right: 2px; top: 8px; transform: rotate(11deg); }
.v8-recycle-bin-paper.p3 { width: 12px; height: 6px; left: 5px; bottom: 4px; transform: rotate(4deg); }
.v8-app-count-badge {
  position: absolute;
  top: -7px;
  right: -9px;
  z-index: 2;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 2px solid rgba(15,23,42,0.95);
  background: #ef4444;
  color: #fff;
  font-size: 11px;
  line-height: 1;
  font-weight: 900;
  letter-spacing: -0.02em;
  box-shadow: 0 8px 18px rgba(0,0,0,0.3);
}
.v8-module-app-icon.v8-recycle-bin-empty .v8-app-count-badge { display: none; }
.v8-device-phone .v8-app-count-badge { top: -6px; right: -8px; }


/* ---- shell-searchbar-trigger.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/* Virii8 Searchbar trigger - tiny first-paint replacement for the full movable searchbar runtime. */
.v8-shell-searchbar-trigger {
  position: fixed;
  left: 50%;
  bottom: calc(env(safe-area-inset-bottom, 0px) + 72px);
  transform: translateX(-50%);
  z-index: 98;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 999px;
  background: rgba(15, 23, 42, .72);
  color: #f8fafc;
  box-shadow: 0 12px 30px rgba(15, 23, 42, .24);
  backdrop-filter: blur(14px) saturate(135%);
  -webkit-backdrop-filter: blur(14px) saturate(135%);
  font: 600 13px/1.15 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  cursor: pointer;
  user-select: none;
  touch-action: manipulation;
}
.v8-shell-searchbar-trigger b { font: inherit; }
.v8-shell-searchbar-trigger small {
  opacity: .76;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .01em;
}
.v8-shell-searchbar-trigger:hover,
.v8-shell-searchbar-trigger:focus-visible {
  outline: none;
  border-color: rgba(56, 189, 248, .58);
  background: rgba(2, 6, 23, .82);
}
.v8-platform-mac .v8-shell-searchbar-trigger,
.v8-platform-ios .v8-shell-searchbar-trigger {
  bottom: calc(env(safe-area-inset-bottom, 0px) + 82px);
}
.v8-platform-neomatrix .v8-shell-searchbar-trigger,
body.v8-platform-neomatrix .v8-shell-searchbar-trigger {
  border-color: rgba(34, 197, 94, .55);
  background: rgba(0, 18, 7, .78);
  color: #bbf7d0;
  text-shadow: 0 0 8px rgba(34, 197, 94, .45);
}
@media (max-width: 720px) {
  .v8-shell-searchbar-trigger {
    bottom: calc(env(safe-area-inset-bottom, 0px) + 84px);
    max-width: calc(100vw - 28px);
  }
  .v8-shell-searchbar-trigger small { display: none; }
}

/* v1.6.1232: when the full searchbar runtime is lazy, restore the user's
   saved collapsed/floating search icon state instead of showing the default
   bottom-center Search pill after refresh. */
.v8-shell-searchbar-trigger.is-restored-floating {
  position: fixed;
  right: auto;
  bottom: auto;
  transform: none;
  z-index: 114;
}
.v8-shell-searchbar-trigger.is-restored-collapsed {
  width: 48px;
  min-width: 48px;
  max-width: 48px;
  height: 48px;
  min-height: 48px;
  padding: 0;
  justify-content: center;
  gap: 0;
  border-radius: 999px;
  border-color: rgba(34, 197, 94, .46);
  background: radial-gradient(circle at 35% 30%, rgba(20, 184, 166, .88), rgba(6, 95, 70, .94));
  box-shadow: 0 10px 28px rgba(15, 23, 42, .26), inset 0 0 0 1px rgba(255,255,255,.18);
}
.v8-shell-searchbar-trigger.is-restored-collapsed span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  font-size: 19px;
  line-height: 1;
}
.v8-shell-searchbar-trigger.is-restored-collapsed small,
.v8-shell-searchbar-trigger.is-restored-collapsed b:not(.screen-reader-text) {
  display: none;
}
.v8-shell-searchbar-trigger.is-restored-collapsed[data-dragged="true"] {
  cursor: grabbing;
}

/* v1.6.1260: exact first-paint restore for taskbar/dock searchbar placement. */
.v8-taskbar .v8-shell-searchbar-trigger-slot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 44px;
  max-width: min(320px, 30vw);
  margin: 0 4px;
}
.v8-taskbar .v8-shell-searchbar-trigger-slot.is-searchbar-collapsed {
  flex-basis: 44px;
  min-width: 44px;
  max-width: 44px;
}
.v8-shell-searchbar-trigger.is-restored-taskbar {
  position: static;
  left: auto !important;
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  transform: none !important;
  z-index: 3;
  max-width: 100%;
}
.v8-shell-searchbar-trigger.is-restored-taskbar.is-restored-collapsed {
  width: 40px;
  min-width: 40px;
  max-width: 40px;
  height: 40px;
  min-height: 40px;
  padding: 0;
  margin: 0;
  justify-content: center;
  border-radius: 999px;
}
.v8-shell-searchbar-trigger.is-restored-taskbar.is-restored-collapsed span {
  width: 30px;
  height: 30px;
  font-size: 18px;
}
.v8-shell-searchbar-trigger.is-theme-matrix,
.v8-shell-searchbar-trigger.is-theme-matrix.is-restored-collapsed {
  border-color: rgba(0, 255, 136, .42);
  background: linear-gradient(180deg, rgba(0, 24, 12, .92), rgba(0, 7, 5, .94));
  color: #89ffbd;
  text-shadow: 0 0 8px rgba(0, 255, 136, .34);
  box-shadow: 0 12px 28px rgba(0,0,0,.34), 0 0 18px rgba(0,255,136,.14);
}
.v8-shell-searchbar-trigger.is-compact:not(.is-restored-collapsed) small {
  display: none;
}


/* ---- shell-admin-tools-trigger.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell tools trigger.
 * v1.6.481: keeps front-end debug/settings floating launchers visible for signed-in users while heavier panels lazy-load on intent.
 */
#v8e-admin-debug-tools {
  display: none;
  position: fixed;
  right: calc(max(10px, env(safe-area-inset-right, 0px)) + var(--v8-floating-ui-right-offset, 0px));
  bottom: calc(var(--v8e-admin-tools-anchor-bottom, 74px) + max(10px, env(safe-area-inset-bottom, 0px)) + var(--v8e-admin-btn-offset, 0px) + var(--v8e-admin-tools-y, 0px));
  z-index: 2147483000;
  pointer-events: none;
  align-items: flex-end;
}
#v8e-admin-debug-tools.v8e-tools-enabled { display: block; }
.v8-os-environment:fullscreen #v8e-admin-debug-tools,
.v8-os-environment:-webkit-full-screen #v8e-admin-debug-tools,
.v8-os-environment.v8-pseudo-fullscreen #v8e-admin-debug-tools { z-index: 2147483647; }
#v8e-admin-debug-tools .v8e-tool-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  pointer-events: auto;
  touch-action: none;
}
#v8e-admin-debug-tools .v8e-tool-trigger.v8e-hidden { display: none !important; }
#v8e-admin-debug-tools .v8e-tool-trigger {
  position: relative !important;
  right: auto !important;
  bottom: auto !important;
  z-index: 1;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 15px;
  font-weight: 800;
  opacity: .72;
  backdrop-filter: blur(18px);
  transition: opacity .15s, transform .15s, border-color .15s, background .15s;
}
#v8e-admin-debug-tools .v8e-tool-trigger:hover { opacity: 1; transform: translateY(-1px); }
#v8e-admin-debug-tools .v8e-tool-grip {
  width: 34px;
  height: 18px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(2,6,23,.52);
  color: rgba(255,255,255,.72);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: ns-resize;
  font: 800 13px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  opacity: .54;
  box-shadow: 0 8px 22px rgba(0,0,0,.26);
  backdrop-filter: blur(18px);
  user-select: none;
  -webkit-user-select: none;
}
#v8e-admin-debug-tools .v8e-tool-grip:hover,
#v8e-admin-debug-tools.v8e-tools-dragging .v8e-tool-grip { opacity: 1; color: #fff; border-color: rgba(255,255,255,.34); }
#v8e-admin-debug-tools.v8e-tools-dragging .v8e-tool-stack { cursor: ns-resize; }
#v8e-debug-trigger {
  color: #00ff41;
  background: rgba(0,255,65,.14);
  border: 1px solid rgba(0,255,65,.45);
}
#v8e-admin-trigger {
  color: #38bdf8;
  background: rgba(56,189,248,.14);
  border: 1px solid rgba(56,189,248,.45);
}
#v8e-debug-panel,
#v8e-admin-panel {
  position: fixed;
  z-index: 2147483500;
  display: none;
  pointer-events: auto;
  color: #e5e7eb;
  background: rgba(5,10,18,.97);
  border: 1px solid rgba(56,189,248,.34);
  box-shadow: 0 20px 70px rgba(0,0,0,.65);
  backdrop-filter: blur(24px);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
#v8e-debug-panel.v8e-open,
#v8e-admin-panel.v8e-open { display: flex; }
#v8e-debug-panel {
  left: 0;
  right: 0;
  bottom: 0;
  height: min(320px, 42dvh);
  flex-direction: column;
  border-left: 0;
  border-right: 0;
  border-bottom: 0;
}
#v8e-admin-panel {
  top: calc(var(--v8e-wp-adminbar-offset, 0px) + 42px + env(safe-area-inset-top, 0px));
  right: max(12px, env(safe-area-inset-right, 0px));
  width: min(380px, calc(100vw - 24px));
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, 0px) - 74px - env(safe-area-inset-top, 0px));
  overflow: hidden;
  flex-direction: column;
  border-radius: 18px;
}
#v8e-admin-debug-tools.v8e-admin-tools-loading .v8e-tool-trigger { opacity: .9; }

/* v1.6.993: keep Admin Config below the native WordPress admin toolbar. */
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8e-admin-panel,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8e-admin-panel,
body.v8e-wp-adminbar-enabled #v8e-admin-panel {
  top: calc(var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) + 10px + env(safe-area-inset-top, 0px)) !important;
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) - var(--v8e-admin-panel-safe-bottom, var(--v8e-admin-panel-bottom-reserve, 74px)) - env(safe-area-inset-top, 0px) - 20px) !important;
  z-index: 2147483500 !important;
}


/* ---- shell-identity.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell identity indicator.
 * Shows Guest / Signed in / Admin state independently of the native WordPress admin bar.
 */
.v8e-identity-pill {
  --v8e-id-accent: #38bdf8;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  max-width: min(240px, 34vw);
  height: 24px;
  padding: 0 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(15, 23, 42, .62);
  color: rgba(255,255,255,.92);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 8px 20px rgba(0,0,0,.22);
  backdrop-filter: blur(18px) saturate(150%);
  -webkit-backdrop-filter: blur(18px) saturate(150%);
  font: 800 11px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: .01em;
  white-space: nowrap;
  overflow: hidden;
  cursor: pointer;
  opacity: .94;
  transition: transform .14s ease, opacity .14s ease, border-color .14s ease, background .14s ease;
}
.v8e-identity-pill:hover,
.v8e-identity-pill.v8e-open {
  opacity: 1;
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--v8e-id-accent), white 18%);
  background: rgba(15, 23, 42, .78);
}
.v8e-identity-pill .v8e-identity-dot { color: var(--v8e-id-accent); filter: drop-shadow(0 0 6px var(--v8e-id-accent)); }
.v8e-identity-pill .v8e-identity-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.v8e-identity-pill.v8e-identity-admin { --v8e-id-accent: #fbbf24; color: #fff7ed; }
.v8e-identity-pill.v8e-identity-signed { --v8e-id-accent: #22c55e; }
.v8e-identity-pill.v8e-identity-guest { --v8e-id-accent: #94a3b8; color: rgba(226,232,240,.9); }
.v8e-identity-pill.v8e-identity-hidden { display: none !important; }
.v8-platform-win .v8-sys-tray .v8e-identity-pill,
.v8-platform-android .v8-sys-tray .v8e-identity-pill { height: 28px; max-width: 210px; }
.v8-platform-mac .v8-menubar-right .v8e-identity-pill { height: 22px; max-width: 220px; }
.v8-mobile-topbar .v8e-identity-pill { height: 24px; padding: 0 8px; max-width: 118px; }
.v8-mobile-topbar .v8e-identity-name { display: none; }
.v8e-identity-menu {
  position: fixed;
  z-index: 999999;
  display: none;
  width: min(300px, calc(100vw - 24px));
  max-height: min(420px, calc(100dvh - 24px));
  overflow: auto;
  padding: 10px;
  border-radius: 18px;
  color: #e5e7eb;
  background: rgba(5, 10, 18, .965);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 22px 70px rgba(0,0,0,.58);
  backdrop-filter: blur(26px) saturate(160%);
  -webkit-backdrop-filter: blur(26px) saturate(160%);
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.v8e-identity-menu.v8e-open { display: block; animation: v8-fade-in .14s ease forwards; }
.v8-os-environment:fullscreen .v8e-identity-menu,
.v8-os-environment:-webkit-full-screen .v8e-identity-menu,
.v8-os-environment.v8-pseudo-fullscreen .v8e-identity-menu {
  z-index: 2147483647;
}
.v8e-identity-menu-head { display:flex; align-items:center; gap:10px; padding:8px; border-bottom:1px solid rgba(255,255,255,.08); }
.v8e-identity-avatar {
  width: 38px;
  height: 38px;
  border-radius: 14px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  background: rgba(56,189,248,.16);
  border:1px solid rgba(56,189,248,.25);
  overflow:hidden;
  font-size: 18px;
}
.v8e-identity-avatar img { width:100%; height:100%; object-fit:cover; display:block; }
.v8e-identity-menu-name { font-weight:900; color:#fff; line-height:1.2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v8e-identity-menu-sub { margin-top:3px; color:#94a3b8; font-size:.78rem; line-height:1.2; }
.v8e-identity-menu-badges { display:flex; flex-wrap:wrap; gap:6px; padding:9px 8px 2px; }
.v8e-identity-badge { border-radius:999px; padding:4px 8px; font-size:.72rem; font-weight:800; color:#dbeafe; background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.1); }
.v8e-identity-badge-admin { color:#fef3c7; background:rgba(251,191,36,.12); border-color:rgba(251,191,36,.35); }
.v8e-identity-badge-signed { color:#bbf7d0; background:rgba(34,197,94,.12); border-color:rgba(34,197,94,.28); }
.v8e-identity-badge-guest { color:#e2e8f0; background:rgba(148,163,184,.12); border-color:rgba(148,163,184,.25); }
.v8e-identity-actions { display:grid; gap:7px; padding:8px; }
.v8e-identity-action {
  display:flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  padding:7px 9px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.1);
  background:rgba(255,255,255,.055);
  color:#e5e7eb;
  text-decoration:none;
  font-size:.82rem;
  font-weight:750;
  cursor:pointer;
}
.v8e-identity-action:hover { color:#fff; background:rgba(56,189,248,.18); border-color:rgba(56,189,248,.32); }
.v8e-identity-action-danger:hover { background:rgba(239,68,68,.16); border-color:rgba(248,113,113,.32); }
.v8e-identity-action-icon {
  display: inline-grid;
  place-items: center;
  width: 18px;
  min-width: 18px;
  line-height: 1;
}
.v8e-power-icon {
  position: relative;
  display: inline-block;
  width: 1.05em;
  height: 1.05em;
  box-sizing: border-box;
  border: .14em solid currentColor;
  border-top-color: transparent;
  border-radius: 999px;
  flex: 0 0 auto;
  line-height: 1;
}
.v8e-power-icon::before {
  content: "";
  position: absolute;
  left: 50%;
  top: -.25em;
  width: .14em;
  height: .64em;
  transform: translateX(-50%);
  border-radius: 999px;
  background: currentColor;
}
.v8e-power-icon-inline {
  width: 17px;
  height: 17px;
  color: currentColor;
}
.v8e-power-icon-modal {
  width: 25px;
  height: 25px;
  color: #fecaca;
}
.v8e-power-icon-button {
  width: 16px;
  height: 16px;
  color: #fff;
}
@media (max-width: 760px) {
  .v8e-identity-pill { max-width: 132px; }
  .v8e-identity-pill .v8e-identity-label-prefix { display:none; }
  .v8e-identity-menu { width: min(292px, calc(100vw - 18px)); }
}

/* Shell-native logout confirmation modal. Prevents WordPress's white fallback
   logout screen from interrupting the desktop when an escaped logout URL is clicked. */
.v8e-logout-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
  background: rgba(2, 6, 23, .58);
  backdrop-filter: blur(10px) saturate(135%);
  -webkit-backdrop-filter: blur(10px) saturate(135%);
  box-sizing: border-box;
  animation: v8e-logout-backdrop-in .14s ease-out both;
}
.v8e-logout-modal {
  width: min(430px, calc(100vw - 32px));
  max-height: calc(100dvh - 36px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
  overflow: auto;
  box-sizing: border-box;
  padding: 24px;
  border-radius: 22px;
  color: #f8fafc;
  background:
    radial-gradient(circle at top left, rgba(56,189,248,.18), transparent 36%),
    linear-gradient(180deg, rgba(15,23,42,.98), rgba(2,6,23,.98));
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: 0 28px 90px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,255,255,.08);
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-align: left;
  animation: v8e-logout-modal-in .16s ease-out both;
}
.v8e-logout-modal-icon {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  margin: 0 0 14px;
  border-radius: 16px;
  color: #fecaca;
  background: rgba(239,68,68,.14);
  border: 1px solid rgba(248,113,113,.28);
  box-shadow: 0 12px 28px rgba(239,68,68,.12);
  font-size: 21px;
}
.v8e-logout-modal h2 {
  margin: 0 0 8px;
  font-size: 1.38rem;
  line-height: 1.15;
  letter-spacing: -.02em;
  color: #fff;
}
.v8e-logout-modal p {
  margin: 0 0 22px;
  color: rgba(226,232,240,.82);
  font-size: .95rem;
  line-height: 1.45;
}
.v8e-logout-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}
.v8e-logout-modal-actions button {
  appearance: none;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 12px;
  min-height: 40px;
  padding: 10px 16px;
  cursor: pointer;
  font-weight: 850;
  font-size: .9rem;
  transition: transform .12s ease, background .12s ease, border-color .12s ease, opacity .12s ease;
}
.v8e-logout-confirm { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.v8e-logout-modal-actions button:hover { transform: translateY(-1px); }
.v8e-logout-modal-actions button:focus-visible {
  outline: 2px solid rgba(56,189,248,.9);
  outline-offset: 2px;
}
.v8e-logout-cancel {
  color: #e2e8f0;
  background: rgba(255,255,255,.07);
}
.v8e-logout-cancel:hover {
  color: #fff;
  background: rgba(255,255,255,.12);
  border-color: rgba(255,255,255,.22);
}
.v8e-logout-confirm {
  color: #fff;
  background: linear-gradient(180deg, #ef4444, #b91c1c);
  border-color: rgba(248,113,113,.55) !important;
  box-shadow: 0 12px 26px rgba(239,68,68,.2);
}
.v8e-logout-confirm:hover { background: linear-gradient(180deg, #f87171, #dc2626); }
.v8e-logout-confirm:disabled { cursor: progress; opacity: .72; transform: none; }
@keyframes v8e-logout-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes v8e-logout-modal-in { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
@media (max-width: 560px) {
  .v8e-logout-modal {
    width: min(420px, calc(100vw - 22px));
    padding: 20px;
    border-radius: 20px;
  }
  .v8e-logout-modal-actions { display: grid; grid-template-columns: 1fr; }
  .v8e-logout-modal-actions button { width: 100%; }
  .v8e-logout-cancel { order: 2; }
  .v8e-logout-confirm { order: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .v8e-logout-modal-backdrop,
  .v8e-logout-modal { animation: none !important; }
  .v8e-logout-modal-actions button { transition: none !important; }
}

/* v1.6.994: desktop macOS menubar identity pill must stay visually inside the top bar. */
.v8-platform-mac:not(.v8-device-phone) .v8-menubar-right .v8e-identity-pill,
.v8-platform-ios:not(.v8-device-phone) .v8-menubar-right .v8e-identity-pill {
  height: 22px !important;
  min-height: 0 !important;
  max-height: 22px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  line-height: 1 !important;
  overflow: hidden !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 3px 10px rgba(0,0,0,.16) !important;
}
.v8-platform-mac:not(.v8-device-phone) .v8-menubar-right .v8e-identity-pill:hover,
.v8-platform-mac:not(.v8-device-phone) .v8-menubar-right .v8e-identity-pill.v8e-open,
.v8-platform-ios:not(.v8-device-phone) .v8-menubar-right .v8e-identity-pill:hover,
.v8-platform-ios:not(.v8-device-phone) .v8-menubar-right .v8e-identity-pill.v8e-open {
  transform: none !important;
}



/* ---- shell-viewport-clock.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-viewport-clock-overlap-fix-1638
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-viewport-clock-overlap-fix-1638 ---- */
/* Virii8 v1.6.42 — upload gateway first, then AJAX/REST fallback. */
#v8-os-container {
  --v8-shell-bottom-reserve: 74px;
  --v8-mobile-panel-top: calc(42px + env(safe-area-inset-top, 0px));
  --v8-mobile-panel-bottom: calc(var(--v8-shell-bottom-reserve, 82px) + env(safe-area-inset-bottom, 0px) + 8px);
}
.v8-clock-display,
#v8-time-now,
#status-clock,
.v8-ss-clock-time {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1, "lnum" 1;
  white-space: nowrap;
  text-align: center;
  contain: content;
}
.v8-clock-display { min-width: 5.9em; display: inline-block; }
#v8-time-now { min-width: 7.8em; }
#status-clock { min-width: 5.9em; display: inline-block; }
.v8-device-phone .v8-clock-display { min-width: 5.2em; }

#v8e-admin-debug-tools {
  right: calc(max(12px, env(safe-area-inset-right, 0px)) + var(--v8-floating-ui-right-offset, 0px)) !important;
  bottom: calc(var(--v8e-admin-tools-anchor-bottom, 74px) + max(10px, env(safe-area-inset-bottom, 0px)) + var(--v8e-admin-btn-offset, 0px) + var(--v8e-admin-tools-y, 0px)) !important;
}
#v8e-admin-debug-tools.v8e-stacked .v8e-tool-trigger {
  position: relative !important;
  right: auto !important;
  bottom: auto !important;
}
#v8e-admin-debug-tools:not(.v8e-stacked) .v8e-tool-trigger {
  right: calc(max(12px, env(safe-area-inset-right, 0px)) + var(--v8-floating-ui-right-offset, 0px)) !important;
}
#v8e-admin-debug-tools:not(.v8e-stacked) #v8e-debug-trigger {
  bottom: calc(var(--v8e-admin-tools-anchor-bottom, 74px) + max(10px, env(safe-area-inset-bottom, 0px)) + var(--v8e-admin-btn-offset, 0px)) !important;
}
#v8e-admin-debug-tools:not(.v8e-stacked) #v8e-admin-trigger {
  bottom: calc(var(--v8e-admin-tools-anchor-bottom, 74px) + 42px + max(10px, env(safe-area-inset-bottom, 0px)) + var(--v8e-admin-btn-offset, 0px)) !important;
}
#v8e-debug-panel,
#v8e-admin-panel {
  --v8e-admin-panel-safe-bottom: calc(var(--v8e-admin-panel-bottom-reserve, 74px) + env(safe-area-inset-bottom, 0px));
}
#v8e-debug-panel {
  bottom: var(--v8e-admin-panel-safe-bottom) !important;
  max-height: calc(100dvh - var(--v8e-admin-panel-safe-bottom) - env(safe-area-inset-top, 0px) - 16px) !important;
}
#v8e-admin-panel {
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, 0px) - env(safe-area-inset-top, 0px) - var(--v8e-admin-panel-safe-bottom) - 24px) !important;
}

.v8-device-phone .v8-window,
.v8-device-phone .v8-window.maximized {
  left: 0 !important;
  right: 0 !important;
  top: calc(34px + env(safe-area-inset-top, 0px)) !important;
  width: 100% !important;
  height: calc(100dvh - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 82px) - env(safe-area-inset-bottom, 0px)) !important;
  max-height: calc(100dvh - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 82px) - env(safe-area-inset-bottom, 0px)) !important;
  border-radius: 0 !important;
  transform: none !important;
  overflow: hidden !important;
}
.v8-device-phone .v8-window-body,
.v8-device-phone .v8-app-content,
.v8-device-phone .v8-app-layout {
  min-height: 0 !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}
.v8-device-phone .v8-status-panel,
.v8-device-phone .v8-start-menu,
.v8-device-phone .v8-shell-tools-popout,
.v8-device-phone .v8-command-palette-panel,
.v8-device-phone .v8-switcher {
  position: absolute !important;
  left: max(8px, env(safe-area-inset-left, 0px)) !important;
  right: max(8px, env(safe-area-inset-right, 0px)) !important;
  top: var(--v8-mobile-panel-top) !important;
  bottom: var(--v8-mobile-panel-bottom) !important;
  width: auto !important;
  max-width: none !important;
  max-height: none !important;
  transform: none !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
  border-radius: 18px !important;
}
.v8-device-phone .v8-start-menu .v8-start-grid,
.v8-device-phone .v8-calendar-grid,
.v8-device-phone .v8-panel-card,
.v8-device-phone .v8-calendar-links-panel {
  max-width: 100%;
}
.v8-device-phone .v8-calendar-grid {
  overflow: auto;
}
.v8-device-phone .v8e-admin-grid,
.v8-device-phone .v8e-admin-row {
  grid-template-columns: 1fr !important;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 640px) {
  #v8e-admin-panel {
    top: calc(var(--v8e-wp-adminbar-offset, 0px) + 8px + env(safe-area-inset-top, 0px)) !important;
    left: max(8px, env(safe-area-inset-left, 0px)) !important;
    right: max(8px, env(safe-area-inset-right, 0px)) !important;
    width: auto !important;
    max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 20px) !important;
  }
  #v8e-debug-panel {
    height: min(320px, calc(56dvh - var(--v8-shell-bottom-reserve, 72px) / 2)) !important;
  }
}

/* v1.6.339: broadcast/statusbar/window stack fix.
 * This file loads after shell-broadcasts.css, so it must repeat the phone
 * window geometry override. Otherwise the base mobile top:34px rule wins and
 * app titlebars sit underneath the broadcast-shifted macOS/iOS topbar. */
body.has-v8e-broadcast-top #v8-os-container.v8-device-phone .v8-window,
body.has-v8e-broadcast-top #v8-os-container.v8-device-phone .v8-window.maximized,
body.has-v8e-broadcast-top .v8-os-environment.v8-device-phone .v8-window,
body.has-v8e-broadcast-top .v8-os-environment.v8-device-phone .v8-window.maximized,
body.has-v8e-broadcast-top .v8-public-desktop.v8-device-phone .v8-window,
body.has-v8e-broadcast-top .v8-public-desktop.v8-device-phone .v8-window.maximized,
#v8-os-container.has-v8e-broadcast-top.v8-device-phone .v8-window,
#v8-os-container.has-v8e-broadcast-top.v8-device-phone .v8-window.maximized,
.v8-os-environment.has-v8e-broadcast-top.v8-device-phone .v8-window,
.v8-os-environment.has-v8e-broadcast-top.v8-device-phone .v8-window.maximized,
.v8-public-desktop.has-v8e-broadcast-top.v8-device-phone .v8-window,
.v8-public-desktop.has-v8e-broadcast-top.v8-device-phone .v8-window.maximized {
  top: calc(var(--v8e-broadcast-height, 44px) + 34px + var(--v8-safe-top, env(safe-area-inset-top, 0px))) !important;
  height: calc(100dvh - var(--v8e-broadcast-height, 44px) - 34px - var(--v8-safe-top, env(safe-area-inset-top, 0px)) - var(--v8-shell-bottom-reserve, 82px) - env(safe-area-inset-bottom, 0px)) !important;
  max-height: calc(100dvh - var(--v8e-broadcast-height, 44px) - 34px - var(--v8-safe-top, env(safe-area-inset-top, 0px)) - var(--v8-shell-bottom-reserve, 82px) - env(safe-area-inset-bottom, 0px)) !important;
}



/* ---- shell-workspace-items.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell CSS module: v8-advanced-workspace-items-style
 * Extracted from shell-core.css during v1.6.122 modular shell refactor.
 * Load order is controlled by V8E_Module_WorkspaceShell::enqueue_embedded_shell_assets().
 */
/* ---- v8-advanced-workspace-items-style ---- */
.v8-ws-menu {
    position:absolute;
    z-index:999999;
    min-width:230px;
    padding:8px;
    border-radius:14px;
    border:1px solid rgba(255,255,255,.16);
    background:rgba(8,12,20,.96);
    color:var(--v8-text-main,#f8fafc);
    box-shadow:0 22px 64px rgba(0,0,0,.55);
    backdrop-filter:blur(18px);
    display:none;
    user-select:none;
  }
  .v8-ws-menu.active { display:block; }
  .v8-ws-menu button {
    width:100%;
    display:flex;
    gap:9px;
    align-items:center;
    border:0;
    border-radius:10px;
    padding:9px 10px;
    background:transparent;
    color:inherit;
    text-align:left;
    font:inherit;
    cursor:pointer;
  }
  .v8-ws-menu button:hover { background:rgba(56,189,248,.22); }
  .v8-ws-menu-title { padding:6px 10px 4px; color:rgba(226,232,240,.88); font-size:.78rem; font-weight:800; letter-spacing:.02em; text-transform:uppercase; }
  .v8-ws-divider { height:1px; margin:6px 4px; background:rgba(255,255,255,.12); }
  .v8-ws-panel {
    position:absolute;
    z-index:999998;
    width:min(520px, calc(100% - 24px));
    max-height:min(620px, calc(100dvh - var(--v8-shell-bottom-reserve,72px) - 34px));
    overflow:auto;
    top:58px;
    right:16px;
    border-radius:20px;
    border:1px solid rgba(255,255,255,.16);
    background:rgba(8,12,20,.96);
    box-shadow:0 28px 80px rgba(0,0,0,.62);
    color:var(--v8-text-main,#f8fafc);
    backdrop-filter:blur(20px);
    padding:16px;
  }
  .v8-ws-panel-header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
  .v8-ws-panel h3 { margin:0; font-size:1rem; }
  .v8-ws-panel .v8-ws-muted { color:var(--v8-text-muted,#94a3b8); font-size:.86rem; line-height:1.35; }
  .v8-ws-panel button,
  .v8-ws-window-btn {
    border:1px solid rgba(255,255,255,.16);
    border-radius:10px;
    padding:8px 10px;
    color:var(--v8-text-main,#f8fafc);
    background:rgba(255,255,255,.08);
    cursor:pointer;
  }
  .v8-ws-panel button:hover,
  .v8-ws-window-btn:hover { background:rgba(56,189,248,.22); }

  .v8-ws-rename-form { display:grid; gap:12px; }
  .v8-ws-rename-form label { display:grid; gap:6px; font-size:.82rem; color:var(--v8-text-muted,#94a3b8); }
  .v8-ws-rename-form input[type="text"] {
    width:100%;
    box-sizing:border-box;
    border:1px solid rgba(255,255,255,.18);
    border-radius:12px;
    padding:10px 12px;
    color:var(--v8-text-main,#f8fafc);
    background:rgba(15,23,42,.86);
    outline:none;
  }
  .v8-ws-rename-form input[type="text"]:focus { border-color:rgba(56,189,248,.86); box-shadow:0 0 0 3px rgba(56,189,248,.18); }
  .v8-ws-share-email-form { display:grid; gap:12px; }
  .v8-ws-share-email-form label { display:grid; gap:6px; font-size:.82rem; color:var(--v8-text-muted,#94a3b8); }
  .v8-ws-share-email-form input[type="text"] { width:100%; box-sizing:border-box; border:1px solid rgba(255,255,255,.18); border-radius:12px; padding:10px 12px; color:var(--v8-text-main,#f8fafc); background:rgba(15,23,42,.86); outline:none; }
  .v8-ws-share-email-form input[type="text"]:focus { border-color:rgba(56,189,248,.86); box-shadow:0 0 0 3px rgba(56,189,248,.18); }
  .v8-ws-share-email-modes { display:grid; gap:8px; }
  .v8-ws-share-email-mode { display:grid !important; grid-template-columns:auto 1fr; gap:10px !important; align-items:flex-start; border:1px solid rgba(255,255,255,.12); border-radius:14px; padding:10px 12px; background:rgba(15,23,42,.52); cursor:pointer; color:var(--v8-text-main,#f8fafc) !important; }
  .v8-ws-share-email-mode:hover { border-color:rgba(56,189,248,.42); background:rgba(14,165,233,.12); }
  .v8-ws-share-email-mode input[type="radio"] { margin-top:3px; accent-color:#22c55e; }
  .v8-ws-share-email-mode span { display:grid; gap:3px; }
  .v8-ws-share-email-mode strong { color:var(--v8-text-main,#f8fafc); font-size:.88rem; }
  .v8-ws-share-email-mode em { color:#fecaca; font-style:normal; font-weight:700; }
  .v8-ws-share-email-mode small { color:var(--v8-text-muted,#94a3b8); line-height:1.35; font-size:.76rem; }
  .v8-ws-share-email-files { display:grid; gap:6px; max-height:150px; overflow:auto; margin:0; padding:8px 8px 8px 24px; border:1px solid rgba(255,255,255,.10); border-radius:12px; background:rgba(15,23,42,.46); }
  .v8-ws-share-email-files li { color:var(--v8-text-main,#f8fafc); font-size:.84rem; line-height:1.35; }
  .v8-ws-share-email-files span { color:var(--v8-text-muted,#94a3b8); font-size:.78rem; margin-left:6px; }
  .v8-ws-rename-actions { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
  .v8-ws-warning { border:1px solid rgba(251,191,36,.36); background:rgba(251,191,36,.10); color:#fde68a; border-radius:12px; padding:10px 12px; font-size:.84rem; line-height:1.35; }
  .v8-ws-module-row {
    display:grid;
    grid-template-columns:auto 1fr auto;
    align-items:center;
    gap:10px;
    padding:10px 6px;
    border-bottom:1px solid rgba(255,255,255,.08);
  }
  .v8-ws-module-row:last-child { border-bottom:0; }
  .v8-ws-module-icon { font-size:1.35rem; }
  .v8-ws-module-name { font-weight:700; }
  .v8-ws-module-desc { color:var(--v8-text-muted,#94a3b8); font-size:.8rem; }
  .v8-ws-select-box {
    position:absolute;
    z-index:99990;
    border:1px solid rgba(56,189,248,.95);
    background:rgba(56,189,248,.16);
    box-shadow:0 0 0 1px rgba(14,165,233,.26), inset 0 0 18px rgba(56,189,248,.10);
    pointer-events:none;
    border-radius:8px;
    display:none;
    box-sizing:border-box;
    will-change:left,top,width,height;
  }
  .v8-desktop.v8-ws-selection-active {
    cursor:crosshair;
    touch-action:none;
  }
  body.v8-ws-selecting,
  body.v8-ws-selecting * {
    user-select:none !important;
    -webkit-user-select:none !important;
  }
  .v8-desktop-icon.v8-ws-selected,
  .v8-desktop-icon.selected.v8-ws-selected { outline:2px solid rgba(56,189,248,.95); background:rgba(56,189,248,.18); }
  .v8-ws-folder-icon .v8-icon-img { background:linear-gradient(135deg, rgba(250,204,21,.9), rgba(251,146,60,.78)); color:#111827; }
  .v8-ws-folder-window .v8-window-body {
    display:flex;
    flex-direction:column;
    overflow:hidden;
    min-height:0;
  }
  .v8-ws-folder-grid {
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(92px,1fr));
    align-content:start;
    gap:14px;
    padding:14px;
  }
  .v8-ws-folder-grid .v8-desktop-icon { position:relative !important; left:auto !important; top:auto !important; }
  .v8-ws-folder-grid .v8-user-file-icon { cursor:grab; display:flex !important; }
  .v8-ws-folder-grid .v8-user-file-icon.v8-ws-moving { opacity:.45; pointer-events:none; }
  .v8-ws-folder-grid .v8-user-file-icon .v8-icon-img { margin-left:auto; margin-right:auto; }
  .v8-ws-folder-grid .v8-file-thumbnail { width:100%; height:100%; object-fit:cover; display:block; }
  .v8-desktop.v8-ws-root-drop-target { outline:2px dashed rgba(34,197,94,.72); outline-offset:-14px; }
  .v8-desktop-icon.v8-ws-dragging { opacity:.72; filter:saturate(1.1); }
  .v8-ws-folder-toolbar {
    flex:0 0 auto;
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin:0;
    padding:12px 14px 10px;
    border-bottom:1px solid rgba(255,255,255,.07);
  }
  .v8-ws-folder-empty { grid-column:1 / -1; padding:30px 18px; color:var(--v8-text-muted,#94a3b8); text-align:center; }
  .v8-ws-folder-statusbar {
    flex:0 0 auto;
    margin:0;
    padding:8px 10px;
    border:1px solid rgba(255,255,255,.10);
    border-left:0;
    border-right:0;
    border-bottom:0;
    border-radius:0;
    background:rgba(2,6,23,.58);
    color:var(--v8-text-muted,#94a3b8);
    font-size:.78rem;
    line-height:1.35;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    min-height:34px;
    box-sizing:border-box;
  }
  .v8-ws-folder-statusbar strong { color:var(--v8-text-main,#f8fafc); font-weight:800; }
  .v8-ws-select-mode::after {
    content:'Selection mode';
    position:absolute;
    right:14px;
    bottom:calc(var(--v8-shell-bottom-reserve,72px) + 10px);
    z-index:99991;
    padding:8px 12px;
    border-radius:999px;
    background:rgba(56,189,248,.95);
    color:#020617;
    font-weight:800;
    box-shadow:0 12px 30px rgba(0,0,0,.35);
  }
  .v8-ws-folder-icon.v8-ws-drop-target .v8-icon-img,
  .v8-ws-folder-window.v8-ws-drop-target {
    outline:2px solid rgba(34,197,94,.98);
    box-shadow:0 0 0 5px rgba(34,197,94,.22), 0 18px 48px rgba(0,0,0,.45);
  }
  .v8-ws-folder-icon.v8-ws-drop-target .v8-icon-text { color:#bbf7d0; }
  .v8-ws-child-icon.v8-ws-moving,
  .v8-desktop-icon.v8-ws-moving { opacity:.58; pointer-events:none; }
  @media (max-width:700px) {
    .v8-ws-panel { left:10px; right:10px; top:48px; width:auto; }
    .v8-ws-menu { min-width:min(260px, calc(100vw - 24px)); }
  }


/* v1.6.143: folder window/statusbar stabilization */
.v8-ws-folder-window {
  min-width:min(320px, calc(100vw - 18px));
  min-height:260px;
  max-width:calc(100vw - 12px);
  max-height:calc(100dvh - var(--v8-shell-bottom-reserve,76px) - env(safe-area-inset-bottom,0px) - 10px);
  contain:layout style;
}
.v8-ws-folder-window .v8-window-body {
  position:relative;
  height:calc(100% - var(--v8-window-header-height, 42px));
  min-height:0 !important;
  padding:0 !important;
  display:flex !important;
  flex-direction:column !important;
}
.v8-ws-folder-grid {
  flex:1 1 auto !important;
  min-height:0 !important;
  padding-bottom:14px;
  overscroll-behavior:contain;
}
.v8-ws-folder-statusbar {
  position:relative;
  inset:auto 0 0 0;
  flex:0 0 auto !important;
  margin-top:auto !important;
  width:100%;
}
.v8-ws-folder-window.minimized { display:none !important; }
.v8-ws-folder-window.maximized {
  left:env(safe-area-inset-left,0px) !important;
  top:env(safe-area-inset-top,0px) !important;
  width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)) !important;
  height:calc(100dvh - var(--v8-shell-bottom-reserve,76px) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)) !important;
  transform:none !important;
}
@media (max-width:700px) {
  .v8-ws-folder-window {
    left:8px !important;
    right:8px !important;
    top:calc(env(safe-area-inset-top,0px) + 8px) !important;
    width:calc(100vw - 16px) !important;
    height:calc(100dvh - var(--v8-shell-bottom-reserve,76px) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 16px) !important;
    transform:none !important;
  }
}


/* v1.6.155: desktop icon hover/position stability.
   Keep hover paint-only. Moving the icon by 1px on hover can repeatedly enter/leave
   the pointer hit area, especially while saved positions are being re-applied. */
.v8-desktop.v8-custom-icon-layout .v8-desktop-icon,
.v8-desktop .v8-desktop-icon {
  will-change: background-color, border-color, box-shadow, opacity, filter;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
.v8-desktop.v8-custom-icon-layout .v8-desktop-icon {
  transition:
    background 0.16s ease,
    border-color 0.16s ease,
    box-shadow 0.14s ease,
    opacity 0.14s ease,
    filter 0.14s ease !important;
}
.v8-desktop .v8-desktop-icon:hover:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-desktop .v8-desktop-icon.selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-desktop .v8-desktop-icon.v8-ws-selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving) {
  transform: none !important;
}
.v8-desktop .v8-desktop-icon.v8-icon-dragging,
.v8-desktop .v8-desktop-icon.v8-file-dragging,
.v8-desktop .v8-desktop-icon.v8-ws-dragging,
.v8-desktop .v8-desktop-icon.v8-ws-moving {
  transition: none !important;
  will-change: left, top, transform;
}
@media (prefers-reduced-motion: reduce) {
  .v8-desktop .v8-desktop-icon { transition: none !important; }
}


/* v1.6.178: desktop/folder drag-drop stabilization */
.v8-ws-folder-drag-active .v8-desktop,
.v8-ws-folder-drag-active .v8-ws-folder-grid {
  user-select:none;
}
.v8-desktop-icon[data-v8-ws-folder-move-active="1"] {
  cursor:grabbing;
}
.v8-ws-folder-icon.v8-ws-drop-target .v8-icon-img,
.v8-ws-folder-window.v8-ws-drop-target,
.v8-desktop.v8-ws-root-drop-target {
  transition:outline-color .12s ease, box-shadow .12s ease, background-color .12s ease;
}

/* v1.6.195: logged-in member workspaces should not be polluted by static public/demo shell icons.
   Real module app placement is now managed through workspace_items and the right-click module panel. */
.v8e-member-shell #v8-desktop > .v8-desktop-icon:not(.v8-module-app-icon):not(.v8-user-file-icon):not(.v8-ws-folder-icon):not(.v8-ws-link-icon):not(.v8-content-shortcut-icon),
.v8e-member-shell #v8-start-menu .v8-start-grid > .v8-start-app:not(.v8-module-start-app),
.v8e-member-shell #v8-taskbar .v8-taskbar-icons > .v8-taskbar-icon:not(.v8-module-task-icon),
.v8e-member-shell .v8-phone-dock > .v8-taskbar-icon:not(.v8-module-task-icon) {
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* v1.6.272: pinned article/content shortcuts are real desktop icons.
   They must not be hidden by the member-shell public/demo icon cleanup rule above. */
.v8e-member-shell #v8-desktop > .v8-desktop-icon.v8-ws-link-icon,
.v8e-member-shell #v8-desktop > .v8-desktop-icon.v8-content-shortcut-icon {
  display:flex !important;
  visibility:visible !important;
  pointer-events:auto !important;
}

.v8-taskbar-icon.v8-module-task-icon[data-v8-task-pinned="1"] {
  display:flex;
}
.v8-ws-module-row .v8-ws-module-placement-controls {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}
.v8-ws-module-toggle {
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:12px;
  line-height:1.2;
  white-space:nowrap;
}
.v8-ws-module-toggle input {
  width:16px;
  height:16px;
  margin:0;
}

/* v1.6.196: canonical module icon rendering for desktop, Start, taskbar, macOS dock, and placement panels.
   The taskbar/dock must show the module's actual metadata icon, not Lucide's generic package fallback. */
.v8-app-icon-token,
.v8-taskbar-app-icon {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  max-width:100%;
  max-height:100%;
  pointer-events:none;
}
.v8-taskbar-app-icon {
  width:100%;
  height:100%;
  font-size:1.35rem;
}
.v8-taskbar-icon .v8-taskbar-app-icon > .v8-app-icon-token,
.v8-taskbar-icon .v8-taskbar-app-icon > .v8-app-icon-asset,
.v8-start-app-icon > .v8-app-icon-token,
.v8-start-app-icon > .v8-app-icon-asset,
.v8-icon-img > .v8-app-icon-token,
.v8-icon-img > .v8-app-icon-asset,
.v8-ws-module-icon > .v8-app-icon-token,
.v8-ws-module-icon > .v8-app-icon-asset {
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.v8-app-icon-asset {
  width:1.35em;
  height:1.35em;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  display:block;
  border:0;
  background:transparent;
  pointer-events:none;
  user-select:none;
}
.v8-module-app-icon .v8-icon-img > .v8-app-icon-asset,
.v8-ws-link-icon .v8-icon-img > .v8-app-icon-asset,
.v8-ws-child-icon .v8-icon-img > .v8-app-icon-asset {
  width:36px;
  height:36px;
  border-radius:12px;
  object-fit:cover;
}
.v8-device-phone .v8-module-app-icon .v8-icon-img > .v8-app-icon-asset {
  width:42px;
  height:42px;
}
.v8-taskbar-icon .v8-taskbar-app-icon > .v8-app-icon-asset {
  width:28px;
  height:28px;
}
.v8-platform-mac .v8-taskbar-icon .v8-taskbar-app-icon > .v8-app-icon-asset,
.v8-platform-ios .v8-taskbar-icon .v8-taskbar-app-icon > .v8-app-icon-asset {
  width:34px;
  height:34px;
}
.v8-start-app-icon > .v8-app-icon-asset,
.v8-ws-module-icon > .v8-app-icon-asset {
  width:1.45em;
  height:1.45em;
}
.v8-app-icon-token-fallback {
  display:none;
}
.v8-lucide-ready .v8-app-icon-token-fallback {
  display:none !important;
}


/* v1.6.991: folder-window marquee selection parity with desktop bulk selection. */
.v8-ws-folder-grid {
  position:relative;
}
.v8-ws-folder-grid.v8-ws-selection-active {
  cursor:crosshair;
  touch-action:none;
}
.v8-ws-folder-select-box {
  z-index:8;
}
.v8-ws-folder-grid > .v8-desktop-icon {
  z-index:1;
}
.v8-ws-folder-window.v8-ws-selection-active .v8-ws-folder-statusbar {
  color:var(--v8-text-main,#f8fafc);
  background:rgba(14,165,233,.16);
}

/* v1.6.1017 ZIP password recovery progress UI */
.v8-zip-recovery-form{display:grid;gap:12px}.v8-zip-recovery-form label{display:grid;gap:6px;font-size:.82rem;color:var(--v8-text-muted,#94a3b8)}.v8-zip-recovery-form input[type="text"],.v8-zip-recovery-form input[type="number"],.v8-zip-recovery-form select,.v8-zip-recovery-form textarea{width:100%;box-sizing:border-box;border:1px solid rgba(255,255,255,.18);border-radius:12px;padding:10px 12px;color:var(--v8-text-main,#f8fafc);background:rgba(15,23,42,.86);outline:none}.v8-zip-recovery-form textarea{resize:vertical;min-height:120px}.v8-zip-recovery-form input:focus,.v8-zip-recovery-form select:focus,.v8-zip-recovery-form textarea:focus{border-color:rgba(56,189,248,.86);box-shadow:0 0 0 3px rgba(56,189,248,.18)}.v8-zip-recovery-file,.v8-zip-recovery-warning,.v8-zip-recovery-found,.v8-zip-recovery-estimate{border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:10px 12px;background:rgba(15,23,42,.58);line-height:1.35}.v8-zip-recovery-warning{border-color:rgba(245,158,11,.38);background:rgba(120,53,15,.22);color:#fde68a}.v8-zip-recovery-found{border-color:rgba(34,197,94,.45);background:rgba(20,83,45,.24);color:#bbf7d0}.v8-zip-recovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.v8-zip-recovery-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v8-zip-recovery-checks label{display:flex;gap:7px;align-items:center;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:8px 10px;background:rgba(15,23,42,.45);color:var(--v8-text-main,#f8fafc)}.v8-zip-recovery-section{display:grid;gap:10px}.v8-zip-progress{display:grid;gap:12px}.v8-zip-progress-status{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:11px 12px;background:rgba(15,23,42,.68)}.v8-zip-progress-status strong{letter-spacing:.05em}.v8-zip-status-found{border-color:rgba(34,197,94,.5);background:rgba(20,83,45,.22)}.v8-zip-status-running,.v8-zip-status-queued{border-color:rgba(56,189,248,.46);background:rgba(14,116,144,.2)}.v8-zip-status-failed,.v8-zip-status-exhausted,.v8-zip-status-cancelled{border-color:rgba(248,113,113,.46);background:rgba(127,29,29,.22)}.v8-zip-progress-bar{height:12px;border-radius:999px;background:rgba(15,23,42,.9);border:1px solid rgba(255,255,255,.12);overflow:hidden}.v8-zip-progress-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#06b6d4,#22c55e);transition:width .35s ease}.v8-zip-progress-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.v8-zip-progress-grid div{border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:10px;background:rgba(15,23,42,.5);min-width:0}.v8-zip-progress-grid span{display:block;color:var(--v8-text-muted,#94a3b8);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.v8-zip-progress-grid strong{display:block;margin-top:4px;overflow-wrap:anywhere}.v8-zip-secret-box{display:grid;gap:6px;border:1px solid rgba(34,197,94,.45);border-radius:14px;padding:10px 12px;background:rgba(20,83,45,.24)}.v8-zip-secret-box span{font-size:.75rem;color:#bbf7d0;text-transform:uppercase;letter-spacing:.06em}.v8-zip-secret-box code{font-size:1.05rem;white-space:pre-wrap;overflow-wrap:anywhere;color:#f8fafc}
@media(max-width:560px){.v8-zip-recovery-grid,.v8-zip-progress-grid,.v8-zip-recovery-checks{grid-template-columns:1fr}.v8-zip-progress-status{align-items:flex-start;flex-direction:column}}
.v8-zip-config{display:grid;gap:10px;border:1px solid rgba(56,189,248,.22);border-radius:16px;padding:11px 12px;background:rgba(8,47,73,.22)}.v8-zip-config-title{display:grid;gap:3px}.v8-zip-config-title strong{font-size:.9rem;color:var(--v8-text-main,#f8fafc)}.v8-zip-config-title span{color:var(--v8-text-muted,#94a3b8);font-size:.8rem;line-height:1.35}.v8-zip-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v8-zip-config-grid div{border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:8px 9px;background:rgba(15,23,42,.44);min-width:0}.v8-zip-config-grid span{display:block;color:var(--v8-text-muted,#94a3b8);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em}.v8-zip-config-grid strong{display:block;margin-top:3px;overflow-wrap:anywhere}.v8-zip-length-breakdown{border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(15,23,42,.38);padding:8px 10px}.v8-zip-length-breakdown summary{cursor:pointer;color:var(--v8-text-main,#f8fafc);font-weight:700}.v8-zip-length-breakdown div{display:grid;gap:5px;margin-top:8px}.v8-zip-length-breakdown p{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:5px 0;border-top:1px solid rgba(255,255,255,.08);color:var(--v8-text-muted,#94a3b8)}.v8-zip-length-breakdown p:first-child{border-top:0}.v8-zip-length-breakdown strong{color:var(--v8-text-main,#f8fafc)}.v8-zip-length-breakdown .v8-zip-breakdown-note{display:block;border-top:1px solid rgba(255,255,255,.08);line-height:1.4;color:var(--v8-text-muted,#94a3b8)}
@media(max-width:560px){.v8-zip-config-grid{grid-template-columns:1fr}.v8-zip-length-breakdown p{align-items:flex-start;flex-direction:column;gap:2px}}


/* ---- shell-statusbar.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
.v8-statusbar,.v8e-statusbar,.statusbar{box-sizing:border-box;min-height:24px}


/* ---- shell-neomatrix.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
.v8e-neomatrix,.vos-neomatrix{--v8e-accent:#00ff66;}


/* ---- shell-public.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
.v8e-workspace-root--guest .v8-private-only{display:none!important;}


/* ---- shell-macos.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
.vos-macos .v8-window,.v8e-os-macos .v8-window{border-radius:16px;}

/* v1.6.996: desktop macOS menubar status-pill containment.
   Some Chromium/touch-capable desktop environments match the global coarse-pointer
   44px touch-target rule. That rule is correct for phone/tablet surfaces, but it
   makes the macOS menubar battery/network/time pills spill below the top bar.
   Scope this fix to desktop macOS/iOS-style menu bars only and do not clip the
   menubar, because dropdowns must remain able to escape the bar. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar {
  height: var(--v8-macos-menubar-height, 36px) !important;
  min-height: var(--v8-macos-menubar-height, 36px) !important;
  max-height: var(--v8-macos-menubar-height, 36px) !important;
  align-items: center !important;
  overflow: visible !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-menubar-left,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-menubar-right,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-menubar-left,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-menubar-right,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-menubar-left,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-menubar-right,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-menubar-left,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-menubar-right {
  height: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  align-items: center !important;
  overflow: visible !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger {
  height: 24px !important;
  min-height: 0 !important;
  max-height: 24px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  line-height: 1 !important;
  align-self: center !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 3px 10px rgba(0,0,0,.16) !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger:hover,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger:hover,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger:hover,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger:hover {
  transform: none !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill {
  height: 22px !important;
  min-height: 0 !important;
  max-height: 22px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  line-height: 1 !important;
  align-self: center !important;
  overflow: hidden !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 3px 10px rgba(0,0,0,.16) !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:hover,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill.v8e-open,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:hover,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill.v8e-open,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:hover,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill.v8e-open,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:hover,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill.v8e-open {
  transform: none !important;
}



/* v1.6.996: macOS menubar hover must not affect dock/taskbar geometry.
   Reverts the broad v1.6.996 dock containment approach. Only the menubar
   status/identity pills are stabilized; the dock keeps its original macOS
   transform/magnification behavior and viewport reserve measurement. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill {
  top: auto !important;
  bottom: auto !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  transform: none !important;
  transition: none !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger:hover,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger:hover,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger:hover,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger:hover,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:hover,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill.v8e-open,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:hover,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill.v8e-open,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:hover,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill.v8e-open,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:hover,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill.v8e-open {
  top: auto !important;
  bottom: auto !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  transform: none !important;
  transition: none !important;
}

/* v1.6.997: desktop macOS menubar status hover compositor isolation.
   This intentionally does not target the dock/taskbar. The v1.6.996 rollback
   stays intact: dock magnification and desktop-icon hover behavior remain owned
   by the original taskbar rules. The fix removes hover-time paint deltas from
   the top-right battery/network/time/identity pills so their hover state cannot
   invalidate the bottom dock/taskbar compositor layer. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-menubar-right,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-menubar-right,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-menubar-right,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-menubar-right {
  contain: layout style !important;
  isolation: isolate !important;
  transform: translate3d(0,0,0) !important;
  -webkit-transform: translate3d(0,0,0) !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 3px 10px rgba(0,0,0,.16) !important;
  opacity: 1 !important;
  transform: translate3d(0,0,0) !important;
  -webkit-transform: translate3d(0,0,0) !important;
  transition: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger:hover,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger:focus,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8-status-trigger:focus-visible,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger:hover,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger:focus,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8-status-trigger:focus-visible,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger:hover,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger:focus,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8-status-trigger:focus-visible,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger:hover,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger:focus,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8-status-trigger:focus-visible {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 3px 10px rgba(0,0,0,.16) !important;
  opacity: 1 !important;
  top: auto !important;
  bottom: auto !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  transform: translate3d(0,0,0) !important;
  -webkit-transform: translate3d(0,0,0) !important;
  transition: none !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill {
  transform: translate3d(0,0,0) !important;
  -webkit-transform: translate3d(0,0,0) !important;
  transition: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:hover,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill.v8e-open,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:focus,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:focus-visible,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:hover,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill.v8e-open,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:focus,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:focus-visible,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:hover,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill.v8e-open,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:focus,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-menubar .v8e-identity-pill:focus-visible,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:hover,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill.v8e-open,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:focus,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar .v8e-identity-pill:focus-visible {
  opacity: .94 !important;
  background: rgba(15, 23, 42, .62) !important;
  border-color: rgba(255,255,255,.16) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 3px 10px rgba(0,0,0,.16) !important;
  top: auto !important;
  bottom: auto !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  transform: translate3d(0,0,0) !important;
  -webkit-transform: translate3d(0,0,0) !important;
  transition: none !important;
}


/* v1.6.998: desktop macOS dock glass-layer stabilization.
   The captured issue is the dock base/tint layer repainting while the top-right
   menubar status pills hover. That is a backdrop-filter sampling invalidation,
   not a dock geometry problem. Keep dock magnification/reorder behavior intact,
   but stop the dock base from live-resampling the desktop during unrelated
   menubar hover paints. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-taskbar,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-taskbar,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-taskbar,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-taskbar {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.32), rgba(255,255,255,0.14)),
    linear-gradient(180deg, rgba(235,241,255,0.18), rgba(16,23,42,0.10)),
    rgba(238,244,255,0.17) !important;
  background-clip: padding-box !important;
  isolation: isolate !important;
  transform: translate3d(-50%,0,0) !important;
  -webkit-transform: translate3d(-50%,0,0) !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
  overflow: visible !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-taskbar::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-taskbar::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-taskbar::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-taskbar::before {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  filter: none !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.24), rgba(255,255,255,0.04) 54%, rgba(0,0,0,0.07)) !important;
  transform: translateZ(0) !important;
  -webkit-transform: translateZ(0) !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons::after,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-taskbar .v8-taskbar-icons::after,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons::after,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-taskbar .v8-taskbar-icons::after {
  filter: none !important;
  opacity: .42 !important;
  background: radial-gradient(circle, rgba(255,255,255,0.16), transparent 70%) !important;
  transform: translateZ(0) !important;
  -webkit-transform: translateZ(0) !important;
}

/* v1.6.1004: macOS desktop-icon hover must not repaint the bottom dock.
   v1.6.999 fixed click-off dismissal for the Module App Dock popup, but the
   desktop-icon hover path could still invalidate the macOS dock compositor and
   make the dock/taskbar icons flicker. Keep the dock glass fix and actual dock
   magnification, but force the dock into a quiescent state when the pointer is
   not over the dock and make desktop icon hover paint-only/instant. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop {
  isolation: isolate !important;
  contain: layout style paint !important;
  transform: translateZ(0) !important;
  -webkit-transform: translateZ(0) !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon {
  transition: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  transform: translateZ(0) !important;
  -webkit-transform: translateZ(0) !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-selected:not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving) {
  transform: translateZ(0) !important;
  -webkit-transform: translateZ(0) !important;
  transition: none !important;
  box-shadow: none !important;
  filter: none !important;
}

#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar:not(:hover) .v8-taskbar-icon:not(.v8-dock-dragging),
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar:not(:hover) .v8-taskbar-icon:not(.v8-dock-dragging),
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar:not(:hover) .v8-taskbar-icon:not(.v8-dock-dragging),
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar:not(:hover) .v8-taskbar-icon:not(.v8-dock-dragging) {
  --v8-scale: 1 !important;
  --v8-lift: 0px !important;
  transform: translate3d(0,0,0) scale(1) !important;
  -webkit-transform: translate3d(0,0,0) scale(1) !important;
  transition: none !important;
  will-change: auto !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}


/* v1.6.1004: source-local note. Final authority is in late-loaded shell-core.css. */

/* v1.6.1004: macOS dock static-outside hardening.
 * Desktop icon hover must not wake, rescale, animate, or repaint the bottom dock.
 * The prior fixes removed desktop hover visuals, but Chromium on Android/desktop
 * still repainted dock icons because the dock remained a transform/transition
 * participant while the pointer crossed desktop icons. Freeze the dock whenever
 * the pointer is outside it; allow normal dock behavior only after the dock's own
 * mouseenter marks v8-dock-pointer-inside. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar {
  transform: translate3d(-50%,0,0) !important;
  -webkit-transform: translate3d(-50%,0,0) !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  isolation: isolate !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon {
  --v8-scale: 1 !important;
  --v8-lift: 0px !important;
  transform: translate3d(0,0,0) scale(1) !important;
  -webkit-transform: translate3d(0,0,0) scale(1) !important;
  transition: none !important;
  animation: none !important;
  filter: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon::before {
  transition: none !important;
  animation: none !important;
  opacity: 0 !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon {
  pointer-events: auto !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
}

/* v1.6.1004: macOS dock-layout regression rollback + safe desktop hover glow.
 * v1.6.1003 overreached by forcing the macOS dock/taskbar to fixed geometry and
 * by changing custom desktop icons from absolute to relative positioning. That
 * broke icon placement/offscreen clamping. This pass intentionally does not own
 * dock geometry. It restores only an icon-local hover/selected glow, preserving
 * absolute custom icon coordinates and the existing macOS dock placement rules. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon {
  position: relative !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon {
  isolation: isolate !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  -webkit-transform: none !important;
  transition: none !important;
  will-change: auto !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon > *,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon > *,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon > *,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon > * {
  position: relative;
  z-index: 1;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: 12px;
  border: 1px solid transparent;
  background: transparent;
  box-shadow: none;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(0,0,0);
  -webkit-transform: translate3d(0,0,0);
  transition: opacity 0.12s ease;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover::before {
  opacity: 1;
  background: rgba(255,255,255,0.14);
  border-color: rgba(255,255,255,0.18);
  box-shadow: 0 10px 24px rgba(0,0,0,0.16);
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.selected::before,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-selected::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.selected::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-selected::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.selected::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-selected::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.selected::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-selected::before {
  opacity: 1;
  background: rgba(56,189,248,0.18);
  border-color: rgba(125,211,252,0.34);
  box-shadow: 0 10px 24px rgba(14,165,233,0.16);
}


/* v1.6.1005: source-local macOS desktop-icon drag dock quiescence.
 * Final late-loaded authority is mirrored in shell-core.css. */
body.v8-desktop-icon-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-desktop-icon-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-desktop-file-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-desktop-file-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar {
  transform: translate3d(-50%,0,0) !important;
  -webkit-transform: translate3d(-50%,0,0) !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  isolation: isolate !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
body.v8-desktop-icon-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-desktop-icon-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-desktop-file-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-desktop-file-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon {
  --v8-scale: 1 !important;
  --v8-lift: 0px !important;
  transform: translate3d(0,0,0) scale(1) !important;
  -webkit-transform: translate3d(0,0,0) scale(1) !important;
  transition: none !important;
  animation: none !important;
  filter: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-icon-dragging::before,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-file-dragging::before,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-dragging::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-icon-dragging::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-file-dragging::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-dragging::before {
  opacity: 0 !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transition: none !important;
  animation: none !important;
}


/* ---- shell-windows.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
.v8-window,.vos-window,.v8e-window{max-width:calc(100dvw - 16px);max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 16px);}

/*
 * v1.6.355: Windows/Android desktop taskbar collision guard.
 * Keep Start + embedded search + pinned/open task icons left-aligned, reserve a
 * real right-side lane for system tray + user identity, and scroll the icon rail
 * before it can overlap status controls.
 */
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 8px !important;
  overflow: hidden !important;
  padding-left: max(10px, calc(10px + env(safe-area-inset-left, 0px))) !important;
  padding-right: max(10px, calc(10px + env(safe-area-inset-right, 0px))) !important;
  box-sizing: border-box !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-start-btn,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-start-btn {
  order: 0 !important;
  flex: 0 0 42px !important;
  min-width: 42px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-shell-searchbar-slot,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-shell-searchbar-slot {
  order: 1 !important;
  flex: 0 1 clamp(148px, 23vw, 340px) !important;
  min-width: min(158px, 23vw) !important;
  max-width: 340px !important;
  margin: 0 2px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons {
  order: 2 !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  max-width: none !important;
  width: auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  flex-wrap: nowrap !important;
  gap: 4px !important;
  margin: 0 !important;
  padding: 0 4px 3px !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-gutter: stable;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons::-webkit-scrollbar,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons::-webkit-scrollbar {
  height: 4px;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons::-webkit-scrollbar-thumb,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: rgba(148, 163, 184, .55);
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icon {
  flex: 0 0 42px !important;
  min-width: 42px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
  order: 3 !important;
  position: static !important;
  inset: auto !important;
  right: auto !important;
  left: auto !important;
  top: auto !important;
  bottom: auto !important;
  transform: none !important;
  margin-left: 6px !important;
  flex: 0 1 auto !important;
  min-width: 0 !important;
  max-width: min(360px, 36vw) !important;
  overflow: hidden !important;
  z-index: 5 !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray > *,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray > * {
  flex: 0 0 auto !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill {
  max-width: min(210px, 22vw) !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-overflowing .v8-taskbar-icons,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-overflowing .v8-taskbar-icons {
  box-shadow: inset -14px 0 12px -16px rgba(226, 232, 240, .72);
}

@media (max-width: 1180px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-shell-searchbar-slot,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-shell-searchbar-slot {
    flex-basis: clamp(128px, 19vw, 260px) !important;
    min-width: 128px !important;
    max-width: 260px !important;
  }
}

@media (max-width: 920px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-label,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-label,
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-label-prefix,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-label-prefix {
    display: none !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-shell-searchbar-slot,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-shell-searchbar-slot {
    flex: 0 0 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill {
    max-width: 92px !important;
  }
}


/* v1.6.604 — mobile bottom-control mapping correction.
 * Phone shells intentionally derive from the selected desktop family:
 * - Windows-selected phone => Android-style mobile navigation.
 * - macOS-selected phone => iOS/macOS phone dock/taskbar.
 * Do not force the desktop Windows taskbar onto phones.
 */
#v8-os-container.v8-device-phone.v8-selected-mac,
#v8-os-container.v8-device-phone.v8-platform-ios {
  --v8-shell-bottom-reserve: 86px;
}

#v8-os-container.v8-device-phone.v8-selected-win,
#v8-os-container.v8-device-phone.v8-platform-android {
  --v8-shell-bottom-reserve: 58px;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: calc(12px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  width: min(94vw, 380px) !important;
  min-height: 58px !important;
  padding: 7px 9px !important;
  box-sizing: border-box !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 8px !important;
  border-radius: 22px !important;
  transform: translateX(-50%) translateZ(0) !important;
  z-index: 100600 !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-taskbar-icon,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock .v8-taskbar-icon {
  flex: 0 0 44px !important;
  width: 44px !important;
  min-width: 44px !important;
  height: 44px !important;
  border-radius: 14px !important;
  font-size: 1.35rem !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac #v8-taskbar,
#v8-os-container.v8-device-phone.v8-platform-ios #v8-taskbar,
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-android-nav {
  display: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win #v8-taskbar,
#v8-os-container.v8-device-phone.v8-platform-android #v8-taskbar,
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-platform-android .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-selected-win .v8-mobile-page-dots,
#v8-os-container.v8-device-phone.v8-platform-android .v8-mobile-page-dots,
#v8-os-container.v8-device-phone.v8-selected-win .v8-ios-home-indicator,
#v8-os-container.v8-device-phone.v8-platform-android .v8-ios-home-indicator {
  display: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: calc(8px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  width: min(88vw, 320px) !important;
  height: 42px !important;
  min-height: 42px !important;
  padding: 4px 10px !important;
  box-sizing: border-box !important;
  justify-content: center !important;
  align-items: center !important;
  gap: clamp(22px, 12vw, 42px) !important;
  border-radius: 999px !important;
  background: rgba(10, 14, 22, 0.78) !important;
  border: 1px solid rgba(255,255,255,0.12) !important;
  box-shadow: 0 12px 28px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.08) !important;
  transform: translateX(-50%) translateZ(0) !important;
  z-index: 100600 !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav button,
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav button {
  display: grid !important;
  place-items: center !important;
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  border-radius: 999px !important;
  padding: 0 !important;
  flex: 0 0 34px !important;
}

#v8-os-container.v8-device-phone .v8-window,
#v8-os-container.v8-device-phone .v8-window.maximized,
.v8-os-environment.v8-device-phone .v8-window,
.v8-os-environment.v8-device-phone .v8-window.maximized {
  top: calc(34px + env(safe-area-inset-top, 0px)) !important;
  height: calc(var(--v8-viewport-height, 100dvh) - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-bottom, 0px) - var(--v8e-shell-bottom-offset, 0px)) !important;
  max-height: calc(var(--v8-viewport-height, 100dvh) - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-bottom, 0px) - var(--v8e-shell-bottom-offset, 0px)) !important;
  bottom: auto !important;
}



/* v1.6.605 — mobile theme/customization access regression fix.
 * Keep a tiny Mac/Win theme toggle visible in the phone topbar while preserving
 * the intended mapping: Mac -> iOS/macOS dock, Windows -> Android nav.
 */
#v8-os-container.v8-device-phone .v8-mobile-topbar,
.v8-os-environment.v8-device-phone .v8-mobile-topbar {
  z-index: 100650 !important;
}
#v8-os-container.v8-device-phone .v8-mobile-topbar-left,
.v8-os-environment.v8-device-phone .v8-mobile-topbar-left {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-width: 0 !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle,
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  min-height: 24px !important;
  height: 24px !important;
  padding: 0 8px !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
  border-radius: 999px !important;
  background: rgba(9,14,24,0.56) !important;
  color: #fff !important;
  font-size: 0.72rem !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  box-shadow: 0 6px 14px rgba(0,0,0,0.22) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"],
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"] {
  background: rgba(37,99,235,0.72) !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"],
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"] {
  background: rgba(15,23,42,0.62) !important;
}
#v8-os-container.v8-device-phone .v8-shell-tools-mobile-trigger,
.v8-os-environment.v8-device-phone .v8-shell-tools-mobile-trigger {
  width: 26px !important;
  height: 26px !important;
  min-width: 26px !important;
  min-height: 26px !important;
}
@media (max-width: 374px) {
  #v8-os-container.v8-device-phone .v8-mobile-theme-label,
  .v8-os-environment.v8-device-phone .v8-mobile-theme-label { display: none !important; }
  #v8-os-container.v8-device-phone .v8-mobile-theme-toggle,
  .v8-os-environment.v8-device-phone .v8-mobile-theme-toggle { width: 26px !important; padding: 0 !important; }
}


/* v1.6.614 — Android-effective mobile Windows nav: show center MM/logo Shell Tools button.
 * Some mobile preference paths expose v8-platform-android while v8-selected-mac
 * is still present. Platform-android means Android nav is visible, so the center
 * Shell Tools logo must not be hidden by selected-mac/iOS rules.
 */
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-platform-ios .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo {
  display: block !important;
  width: 22px !important;
  height: 22px !important;
  object-fit: contain !important;
}

/* v1.6.620 — Windows taskbar viewport/date-time guard.
 * Preserve the right-side clock/date trigger before lower-priority tray content
 * can compress or run past the viewport. Icons/search may shrink or scroll;
 * the clock must remain visible.
 */
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar {
  left: 0 !important;
  right: 0 !important;
  width: auto !important;
  max-width: 100dvw !important;
  min-width: 0 !important;
  transform: none !important;
  box-sizing: border-box !important;
  contain: layout style !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons {
  flex: 1 1 0% !important;
  min-width: 0 !important;
  max-width: 100% !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  flex: 0 1 min(340px, 42vw) !important;
  min-width: min(8.8em, 38vw) !important;
  max-width: min(340px, 42vw) !important;
  overflow: visible !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger {
  order: 90 !important;
  flex: 0 0 auto !important;
  min-width: 7.4em !important;
  justify-content: center !important;
  padding-left: 8px !important;
  padding-right: 8px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-clock-display,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-clock-display {
  min-width: 5.8em !important;
  text-align: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger {
  order: 10 !important;
  flex: 0 1 auto !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
  order: 20 !important;
  flex: 0 1 auto !important;
  min-width: 0 !important;
}

@media (max-width: 820px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
    display: none !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
    flex-basis: auto !important;
    min-width: 7.8em !important;
    max-width: 10.5em !important;
  }
}

@media (max-width: 640px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger,
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill {
    display: none !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
    min-width: 7.4em !important;
    max-width: 8.8em !important;
  }
}


/* v1.6.621 — Windows taskbar tray separation guard.
 * The clock/date trigger owns a fixed protected lane. Lower-priority tray
 * controls, especially the network "Connected" label, must truncate or hide
 * before they can visually collide with the clock/date block.
 */
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
  gap: 4px !important;
  column-gap: 4px !important;
  flex: 0 0 auto !important;
  min-width: 0 !important;
  max-width: min(300px, 34vw) !important;
  overflow: hidden !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger {
  flex: 0 0 8.25em !important;
  min-width: 8.25em !important;
  max-width: 8.25em !important;
  margin-left: 4px !important;
  padding-left: 7px !important;
  padding-right: 7px !important;
  overflow: hidden !important;
  position: relative !important;
  z-index: 3 !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger::before,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger::before {
  content: "";
  position: absolute;
  left: -4px;
  top: 5px;
  bottom: 5px;
  width: 1px;
  background: rgba(226, 232, 240, .22);
  pointer-events: none;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger .v8-clock-display,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger .v8-clock-display {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
  flex: 1 1 0 !important;
  min-width: 24px !important;
  max-width: 94px !important;
  overflow: hidden !important;
  padding-left: 7px !important;
  padding-right: 7px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-label,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-label {
  display: inline-block !important;
  min-width: 0 !important;
  max-width: 68px !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger {
  flex: 0 1 58px !important;
  min-width: 0 !important;
  max-width: 58px !important;
  overflow: hidden !important;
}

@media (max-width: 1120px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-label,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-label {
    display: none !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
    flex: 0 0 28px !important;
    max-width: 28px !important;
    width: 28px !important;
    padding-left: 6px !important;
    padding-right: 6px !important;
    justify-content: center !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
    max-width: min(230px, 30vw) !important;
  }
}

@media (max-width: 760px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
    display: none !important;
  }

  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
    max-width: 9.4em !important;
  }
}

/* v1.6.622 — Windows taskbar adaptive tray contract.
 * The taskbar now lets the icon rail absorb pressure first, while the tray
 * degrades by real width tiers instead of hard clipping the identity/status
 * lane. Date/time remains the protected final tray item.
 */
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar {
  --v8-win-taskbar-gap: 6px;
  --v8-win-clock-lane: 8.65em;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: var(--v8-win-taskbar-gap) !important;
  min-width: 0 !important;
  overflow: hidden !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-taskbar-icons {
  flex: 1 1 0 !important;
  min-width: 0 !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 5px !important;
  flex: 0 0 auto !important;
  min-width: 0 !important;
  max-width: calc(100% - 54px) !important;
  overflow: visible !important;
  white-space: nowrap !important;
  contain: layout style !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray > *,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray > * {
  min-width: 0 !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill {
  flex: 0 1 210px !important;
  width: auto !important;
  max-width: min(210px, 28vw) !important;
  min-width: 0 !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-name,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-name {
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger {
  flex: 0 1 64px !important;
  max-width: 64px !important;
  overflow: hidden !important;
  justify-content: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
  flex: 0 1 96px !important;
  max-width: 96px !important;
  min-width: 28px !important;
  overflow: hidden !important;
  justify-content: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-label,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-label {
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger {
  flex: 0 0 var(--v8-win-clock-lane) !important;
  width: var(--v8-win-clock-lane) !important;
  min-width: var(--v8-win-clock-lane) !important;
  max-width: var(--v8-win-clock-lane) !important;
  margin-left: 5px !important;
  overflow: hidden !important;
  justify-content: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger .v8-clock-display,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger .v8-clock-display {
  width: 100% !important;
  min-width: 0 !important;
  overflow: hidden !important;
  text-align: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8-network-label,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8-network-label,
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8e-identity-label-prefix,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8e-identity-label-prefix {
  display: none !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8e-identity-pill {
  flex-basis: 150px !important;
  max-width: min(150px, 22vw) !important;
  padding-left: 8px !important;
  padding-right: 8px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-network-trigger {
  flex: 0 0 32px !important;
  width: 32px !important;
  max-width: 32px !important;
  padding-left: 6px !important;
  padding-right: 6px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-battery-trigger {
  flex: 0 0 38px !important;
  width: 38px !important;
  max-width: 38px !important;
  padding-left: 6px !important;
  padding-right: 6px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-battery-value,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-battery-value {
  display: none !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8e-identity-pill {
  flex-basis: 118px !important;
  max-width: 118px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8e-identity-pill,
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8-battery-trigger {
  display: none !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8-network-trigger {
  flex: 0 0 30px !important;
  width: 30px !important;
  max-width: 30px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8-network-trigger,
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8-battery-trigger,
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8e-identity-pill {
  display: none !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8-time-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-ultra .v8-time-trigger {
  margin-left: 0 !important;
}


/* v1.6.623 — Windows taskbar elastic tray expansion.
 * v1.6.622 protected the clock, but the tray still held conservative max-widths
 * after it had already made room. This pass lets the clock use content width
 * instead of an oversized fixed em lane, lets the network/status pill expand
 * when space exists, and keeps tighter degradation only for measured cramped
 * taskbar states.
 */
#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar {
  --v8-win-taskbar-gap: clamp(4px, 0.55vw, 9px);
  --v8-win-clock-inline-pad: clamp(12px, 0.9vw, 18px);
  --v8-win-network-max: clamp(126px, 14vw, 172px);
  --v8-win-identity-max: clamp(168px, 24vw, 262px);
  --v8-win-tray-max: min(680px, 72vw);
  gap: var(--v8-win-taskbar-gap) !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-sys-tray,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-sys-tray {
  flex: 0 1 var(--v8-win-tray-max) !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: var(--v8-win-tray-max) !important;
  gap: clamp(4px, 0.5vw, 8px) !important;
  overflow: visible !important;
  align-self: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8e-identity-pill {
  flex: 0 1 var(--v8-win-identity-max) !important;
  width: auto !important;
  max-width: var(--v8-win-identity-max) !important;
  min-width: 0 !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-battery-trigger {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: max-content !important;
  max-width: min(92px, 12vw) !important;
  padding-left: clamp(8px, 0.65vw, 13px) !important;
  padding-right: clamp(8px, 0.65vw, 13px) !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-trigger {
  flex: 0 1 var(--v8-win-network-max) !important;
  width: auto !important;
  min-width: 34px !important;
  max-width: var(--v8-win-network-max) !important;
  padding-left: clamp(8px, 0.7vw, 14px) !important;
  padding-right: clamp(8px, 0.7vw, 14px) !important;
  justify-content: center !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-network-label,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-network-label {
  display: inline-block !important;
  max-width: min(118px, calc(var(--v8-win-network-max) - 34px)) !important;
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: max-content !important;
  max-width: none !important;
  margin-left: clamp(3px, 0.42vw, 7px) !important;
  padding-left: var(--v8-win-clock-inline-pad) !important;
  padding-right: var(--v8-win-clock-inline-pad) !important;
  white-space: nowrap !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar .v8-time-trigger .v8-clock-display,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar .v8-time-trigger .v8-clock-display {
  display: inline-block !important;
  width: auto !important;
  min-width: max-content !important;
  max-width: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8-network-label,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8-network-label {
  display: inline-block !important;
  max-width: 96px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-compact .v8-network-trigger {
  flex-basis: min(138px, 15vw) !important;
  max-width: min(138px, 15vw) !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-network-label,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-network-label {
  display: none !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-tight .v8-network-trigger {
  flex: 0 0 34px !important;
  width: 34px !important;
  max-width: 34px !important;
}

#v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8-network-trigger,
#v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar.v8-win-taskbar-critical .v8-network-trigger {
  display: none !important;
}

@media (max-width: 980px) {
  #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar,
  #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar {
    --v8-win-network-max: clamp(104px, 17vw, 148px);
    --v8-win-identity-max: clamp(124px, 23vw, 198px);
    --v8-win-tray-max: min(560px, 78vw);
  }
}


/* Core 1.6.1420 — Windows/Android window chrome ownership guard.
 * Keep title bars touch-friendly and non-shrinking in restored, snapped, and maximized windows. */
#v8-os-container.v8-platform-win .v8-window > .v8-window-header,
#v8-os-container.v8-platform-android .v8-window > .v8-window-header {
  height: 46px !important;
  min-height: 46px !important;
  flex: 0 0 46px !important;
  box-sizing: border-box !important;
}
#v8-os-container.v8-platform-win .v8-window > .v8-window-header .v8-control-btn,
#v8-os-container.v8-platform-android .v8-window > .v8-window-header .v8-control-btn {
  width: 48px !important;
  min-width: 48px !important;
  height: 46px !important;
  min-height: 46px !important;
  padding: 0 !important;
  display: grid !important;
  place-items: center !important;
  line-height: 1 !important;
}
#v8-os-container.v8-platform-win .v8-window > .v8-window-header .v8-window-title,
#v8-os-container.v8-platform-android .v8-window > .v8-window-header .v8-window-title {
  font-size: .88rem !important;
  line-height: 1.2 !important;
}
@media (pointer: coarse) {
  #v8-os-container.v8-platform-android .v8-window > .v8-window-header {
    height: 48px !important;
    min-height: 48px !important;
    flex-basis: 48px !important;
  }
  #v8-os-container.v8-platform-android .v8-window > .v8-window-header .v8-control-btn {
    width: 50px !important;
    min-width: 50px !important;
    height: 48px !important;
    min-height: 48px !important;
  }
}


/* ---- shell-accessibility.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/* Virii8 Pass 38 accessibility: target size, focus visibility and hidden live status. */
.v8-a11y-live {
  position: fixed !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

#v8-os-container .v8-window:focus-visible,
#v8-os-container .v8-control-btn:focus-visible,
#v8-os-container .v8-sidebar-item:focus-visible,
#v8-os-container .v8-window-body [role="button"]:focus-visible,
#v8-os-container .v8-window-body button:focus-visible,
#v8-os-container .v8-taskbar-icon:focus-visible,
#v8-os-container .v8-start-app:focus-visible {
  outline: 3px solid var(--v8-focus-ring, #7dd3fc) !important;
  outline-offset: 2px !important;
}

#v8-os-container.v8-platform-mac .v8-control-btn,
#v8-os-container.v8-platform-ios .v8-control-btn {
  width: 24px !important;
  min-width: 24px !important;
  height: 24px !important;
  padding: 0 !important;
  display: inline-grid !important;
  place-items: center !important;
  background: transparent !important;
}
#v8-os-container.v8-platform-mac .v8-control-btn::before,
#v8-os-container.v8-platform-ios .v8-control-btn::before {
  content: "";
  display: block;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.16);
}
#v8-os-container.v8-platform-mac .v8-btn-close::before,
#v8-os-container.v8-platform-ios .v8-btn-close::before { background: #ff5f56; }
#v8-os-container.v8-platform-mac .v8-btn-min::before,
#v8-os-container.v8-platform-ios .v8-btn-min::before { background: #ffbd2e; }
#v8-os-container.v8-platform-mac .v8-btn-max::before,
#v8-os-container.v8-platform-ios .v8-btn-max::before { background: #28c840; }
#v8-os-container.v8-platform-mac .v8-control-btn > *,
#v8-os-container.v8-platform-ios .v8-control-btn > * { display: none !important; }

#v8-os-container .v8-sidebar-item[role="tab"] {
  width: 100%;
  border-top: 0;
  border-right: 0;
  border-bottom: 0;
  background: transparent;
  font: inherit;
  text-align: left;
}


/* ---- shell-core.css ---- */
/*! No-Name Software - ViRii8 - Bernard Aybout's MiltonMarketing.com | SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Virii8 Workspace Shell core manifest.
 * v1.6.122 moved runtime code into ordered modular files.
 * This file remains as a compatibility handle for WordPress enqueue/dependency overrides.
 */
:root{--v8e-shell-css-contract-version:'shell-core-css-v1';}


/* v1.6.664: WordPress admin-toolbar viewport offset.
 * Toolbar rendering is isolated in shell-wordpress-compat.css. This late-loaded
 * compatibility handle only mirrors the measured offset variable so the final
 * shell container size cannot regress after later CSS modules load.
 */
:root {
  --v8e-wp-adminbar-offset: 0px;
  --v8e-wp-adminbar-fallback-offset: 32px;
}
body.v8e-wp-adminbar-enabled {
  --v8e-wp-adminbar-offset: var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px));
}
body.v8e-wp-adminbar-enabled #v8e-core-fullscreen-shell-root,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-os-environment {
  top: var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)) !important;
  bottom: auto !important;
  height: calc(100svh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) !important;
  height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) !important;
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) !important;
  min-height: 0 !important;
}
body.v8e-wp-adminbar-enabled #v8-os-container .v8-menubar {
  top: 0 !important;
}
@media screen and (max-width: 782px) {
  body.v8e-wp-adminbar-enabled {
    --v8e-wp-adminbar-fallback-offset: 46px;
  }
}

/* v1.6.336: broadcast chrome-slot hardening.
 * The top broadcast ticker must own the first shell row on both desktop and
 * mobile. This late-loading file intentionally overrides adminbar/topbar rules
 * that otherwise reset macOS/iOS status bars back to top:0. JS also applies
 * the same offset inline after measuring the live ticker height.
 */
body.has-v8e-broadcast-top #v8-os-container .v8-menubar,
body.has-v8e-broadcast-top #v8-os-container #v8-menubar,
body.has-v8e-broadcast-top #v8-os-container .v8-mobile-topbar,
body.has-v8e-broadcast-top #v8-os-container #v8-mobile-topbar,
body.has-v8e-broadcast-top .v8-os-environment .v8-menubar,
body.has-v8e-broadcast-top .v8-os-environment #v8-menubar,
body.has-v8e-broadcast-top .v8-os-environment .v8-mobile-topbar,
body.has-v8e-broadcast-top .v8-os-environment #v8-mobile-topbar,
body.has-v8e-broadcast-top .v8-public-desktop .v8-menubar,
body.has-v8e-broadcast-top .v8-public-desktop #v8-menubar,
body.has-v8e-broadcast-top .v8-public-desktop .v8-mobile-topbar,
body.has-v8e-broadcast-top .v8-public-desktop #v8-mobile-topbar {
  top: var(--v8e-broadcast-height, 46px) !important;
}
@media screen and (max-width: 782px) {
  body.v8e-wp-adminbar-enabled {
    --v8e-wp-adminbar-offset: 46px;
  }
}

/* v1.6.339: late compatibility handle for orientation-safe broadcast/mobile windows.
 * shell-core.css is enqueued after the modular CSS files, so keep the final
 * phone window top below the broadcast ticker plus mobile status bar. */
body.has-v8e-broadcast-top #v8-os-container.v8-device-phone .v8-window,
body.has-v8e-broadcast-top #v8-os-container.v8-device-phone .v8-window.maximized,
body.has-v8e-broadcast-top .v8-os-environment.v8-device-phone .v8-window,
body.has-v8e-broadcast-top .v8-os-environment.v8-device-phone .v8-window.maximized,
body.has-v8e-broadcast-top .v8-public-desktop.v8-device-phone .v8-window,
body.has-v8e-broadcast-top .v8-public-desktop.v8-device-phone .v8-window.maximized,
#v8-os-container.has-v8e-broadcast-top.v8-device-phone .v8-window,
#v8-os-container.has-v8e-broadcast-top.v8-device-phone .v8-window.maximized,
.v8-os-environment.has-v8e-broadcast-top.v8-device-phone .v8-window,
.v8-os-environment.has-v8e-broadcast-top.v8-device-phone .v8-window.maximized,
.v8-public-desktop.has-v8e-broadcast-top.v8-device-phone .v8-window,
.v8-public-desktop.has-v8e-broadcast-top.v8-device-phone .v8-window.maximized {
  top: calc(var(--v8e-broadcast-height, 44px) + 34px + var(--v8-safe-top, env(safe-area-inset-top, 0px))) !important;
}



/* v1.6.522: macOS/iOS maximized windows must reserve the visible bottom dock/taskbar. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-window.maximized,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-window.maximized,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-window.maximized,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-window.maximized {
  top: var(--v8-macos-menubar-height, 36px) !important;
  height: calc(100dvh - var(--v8-macos-menubar-height, 36px) - var(--v8-shell-bottom-reserve, 118px) - env(safe-area-inset-bottom, 0px)) !important;
  max-height: calc(100dvh - var(--v8-macos-menubar-height, 36px) - var(--v8-shell-bottom-reserve, 118px) - env(safe-area-inset-bottom, 0px)) !important;
  bottom: auto !important;
}
body.has-v8e-broadcast-top #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-window.maximized,
body.has-v8e-broadcast-top #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-window.maximized,
body.has-v8e-broadcast-top .v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-window.maximized,
body.has-v8e-broadcast-top .v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-window.maximized,
#v8-os-container.has-v8e-broadcast-top.v8-platform-mac:not(.v8-device-phone) .v8-window.maximized,
#v8-os-container.has-v8e-broadcast-top.v8-platform-ios:not(.v8-device-phone) .v8-window.maximized {
  top: calc(var(--v8-macos-menubar-height, 36px) + var(--v8e-broadcast-height, 46px)) !important;
  height: calc(100dvh - var(--v8-macos-menubar-height, 36px) - var(--v8e-broadcast-height, 46px) - var(--v8-shell-bottom-reserve, 118px) - env(safe-area-inset-bottom, 0px)) !important;
  max-height: calc(100dvh - var(--v8-macos-menubar-height, 36px) - var(--v8e-broadcast-height, 46px) - var(--v8-shell-bottom-reserve, 118px) - env(safe-area-inset-bottom, 0px)) !important;
  bottom: auto !important;
}
#v8-os-container .v8-window.v8e-cal-modal-host-active,
.v8-os-environment .v8-window.v8e-cal-modal-host-active {
  z-index: 100760 !important;
}

/* v1.6.604 — mobile bottom-control mapping correction.
 * Phone shells intentionally derive from the selected desktop family:
 * - Windows-selected phone => Android-style mobile navigation.
 * - macOS-selected phone => iOS/macOS phone dock/taskbar.
 * Do not force the desktop Windows taskbar onto phones.
 */
#v8-os-container.v8-device-phone.v8-selected-mac,
#v8-os-container.v8-device-phone.v8-platform-ios {
  --v8-shell-bottom-reserve: 86px;
}

#v8-os-container.v8-device-phone.v8-selected-win,
#v8-os-container.v8-device-phone.v8-platform-android {
  --v8-shell-bottom-reserve: 58px;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: calc(12px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  width: min(94vw, 380px) !important;
  min-height: 58px !important;
  padding: 7px 9px !important;
  box-sizing: border-box !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 8px !important;
  border-radius: 22px !important;
  transform: translateX(-50%) translateZ(0) !important;
  z-index: 100600 !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-taskbar-icon,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-phone-dock .v8-taskbar-icon {
  flex: 0 0 44px !important;
  width: 44px !important;
  min-width: 44px !important;
  height: 44px !important;
  border-radius: 14px !important;
  font-size: 1.35rem !important;
}

#v8-os-container.v8-device-phone.v8-selected-mac #v8-taskbar,
#v8-os-container.v8-device-phone.v8-platform-ios #v8-taskbar,
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav,
#v8-os-container.v8-device-phone.v8-platform-ios .v8-android-nav {
  display: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win #v8-taskbar,
#v8-os-container.v8-device-phone.v8-platform-android #v8-taskbar,
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-platform-android .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-selected-win .v8-mobile-page-dots,
#v8-os-container.v8-device-phone.v8-platform-android .v8-mobile-page-dots,
#v8-os-container.v8-device-phone.v8-selected-win .v8-ios-home-indicator,
#v8-os-container.v8-device-phone.v8-platform-android .v8-ios-home-indicator {
  display: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  bottom: calc(8px + env(safe-area-inset-bottom, 0px) + var(--v8e-shell-bottom-offset, 0px)) !important;
  width: min(88vw, 320px) !important;
  height: 42px !important;
  min-height: 42px !important;
  padding: 4px 10px !important;
  box-sizing: border-box !important;
  justify-content: center !important;
  align-items: center !important;
  gap: clamp(22px, 12vw, 42px) !important;
  border-radius: 999px !important;
  background: rgba(10, 14, 22, 0.78) !important;
  border: 1px solid rgba(255,255,255,0.12) !important;
  box-shadow: 0 12px 28px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.08) !important;
  transform: translateX(-50%) translateZ(0) !important;
  z-index: 100600 !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav button,
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav button {
  display: grid !important;
  place-items: center !important;
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  border-radius: 999px !important;
  padding: 0 !important;
  flex: 0 0 34px !important;
}

#v8-os-container.v8-device-phone .v8-window,
#v8-os-container.v8-device-phone .v8-window.maximized,
.v8-os-environment.v8-device-phone .v8-window,
.v8-os-environment.v8-device-phone .v8-window.maximized {
  top: calc(34px + env(safe-area-inset-top, 0px)) !important;
  height: calc(var(--v8-viewport-height, 100dvh) - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-bottom, 0px) - var(--v8e-shell-bottom-offset, 0px)) !important;
  max-height: calc(var(--v8-viewport-height, 100dvh) - 34px - env(safe-area-inset-top, 0px) - var(--v8-shell-bottom-reserve, 72px) - env(safe-area-inset-bottom, 0px) - var(--v8e-shell-bottom-offset, 0px)) !important;
  bottom: auto !important;
}



/* v1.6.605 — mobile theme/customization access regression fix.
 * Keep a tiny Mac/Win theme toggle visible in the phone topbar while preserving
 * the intended mapping: Mac -> iOS/macOS dock, Windows -> Android nav.
 */
#v8-os-container.v8-device-phone .v8-mobile-topbar,
.v8-os-environment.v8-device-phone .v8-mobile-topbar {
  z-index: 100650 !important;
}
#v8-os-container.v8-device-phone .v8-mobile-topbar-left,
.v8-os-environment.v8-device-phone .v8-mobile-topbar-left {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-width: 0 !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle,
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  min-height: 24px !important;
  height: 24px !important;
  padding: 0 8px !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
  border-radius: 999px !important;
  background: rgba(9,14,24,0.56) !important;
  color: #fff !important;
  font-size: 0.72rem !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  box-shadow: 0 6px 14px rgba(0,0,0,0.22) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"],
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="win"] {
  background: rgba(37,99,235,0.72) !important;
}
#v8-os-container.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"],
.v8-os-environment.v8-device-phone .v8-mobile-theme-toggle[data-v8-theme="mac"] {
  background: rgba(15,23,42,0.62) !important;
}
#v8-os-container.v8-device-phone .v8-shell-tools-mobile-trigger,
.v8-os-environment.v8-device-phone .v8-shell-tools-mobile-trigger {
  width: 26px !important;
  height: 26px !important;
  min-width: 26px !important;
  min-height: 26px !important;
}
@media (max-width: 374px) {
  #v8-os-container.v8-device-phone .v8-mobile-theme-label,
  .v8-os-environment.v8-device-phone .v8-mobile-theme-label { display: none !important; }
  #v8-os-container.v8-device-phone .v8-mobile-theme-toggle,
  .v8-os-environment.v8-device-phone .v8-mobile-theme-toggle { width: 26px !important; padding: 0 !important; }
}




/* v1.6.614 — Android-effective mobile Windows nav: show center MM/logo Shell Tools button.
 * Some mobile preference paths expose v8-platform-android while v8-selected-mac
 * is still present. Platform-android means Android nav is visible, so the center
 * Shell Tools logo must not be hidden by selected-mac/iOS rules.
 */
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
#v8-os-container.v8-device-phone.v8-platform-android.v8-platform-ios .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
}
#v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-platform-android .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main .v8-shell-tools-logo {
  display: block !important;
  width: 22px !important;
  height: 22px !important;
  object-fit: contain !important;
}

/* v1.6.616 — selected mobile family owns phone bottom chrome.
 * Fixes stale override/mixed-class states where macOS-selected mobile still
 * displayed Android navigation. Phone only: Mac => dock/taskbar, Win => Android nav.
 */
#v8-os-container.v8-device-phone.v8-selected-mac,
.v8-os-environment.v8-device-phone.v8-selected-mac {
  --v8-shell-bottom-reserve: 86px !important;
  --v8-shell-tools-mobile-bottom: 94px !important;
}
#v8-os-container.v8-device-phone.v8-selected-win,
.v8-os-environment.v8-device-phone.v8-selected-win {
  --v8-shell-bottom-reserve: 58px !important;
  --v8-shell-tools-mobile-bottom: 62px !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-phone-dock {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-android-nav,
#v8-os-container.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-mac .v8-android-nav .v8-shell-tools-android-main {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-phone-dock,
#v8-os-container.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-phone-dock .v8-shell-tools-mobile-dock-icon {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main,
.v8-os-environment.v8-device-phone.v8-selected-win .v8-android-nav .v8-shell-tools-android-main {
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

/* v1.6.683: WordPress front-end adminbar + macOS menubar guard.
 * Keep the Virii8 macOS top menubar visible directly below the native WP toolbar.
 * This is intentionally late and narrow; it does not hide the WordPress toolbar. */
body.v8e-wp-adminbar-enabled #v8-os-container.v8-os-environment {
  position: fixed !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  top: var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) !important;
  height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)))) !important;
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)))) !important;
  min-height: 0 !important;
}
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  top: 0 !important;
  z-index: 2147482500 !important;
}
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-desktop,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop {
  top: max(44px, calc(var(--v8-macos-menubar-height, 36px) + 8px)) !important;
}
@media screen and (max-width: 782px) {
  body.v8e-wp-adminbar-enabled #v8-os-container.v8-os-environment {
    top: var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 46px))) !important;
    height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 46px)))) !important;
    max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 46px)))) !important;
  }
}
/* v1.6.683: cache-purge/refresh hardening for WP adminbar + macOS menubar.
 * Some purge flows re-render the native WordPress toolbar before the Virii8
 * measured class/offset lands. Treat WordPress' own admin-bar/wp-toolbar markers
 * as authoritative fallbacks so the shell never starts at viewport y=0 under the
 * toolbar after CDN/WP Rocket cache actions. */
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled),
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled),
body.v8e-wp-adminbar-enabled {
  --v8e-wp-adminbar-offset: var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px));
}
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #wpadminbar,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #wpadminbar,
body.v8e-wp-adminbar-enabled #wpadminbar {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  z-index: 2147483600 !important;
}
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8e-core-fullscreen-shell-root,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8e-core-fullscreen-shell-root,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-os-environment,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-os-environment,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) .v8-os-environment,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) .v8-os-environment,
body.v8e-wp-adminbar-enabled #v8e-core-fullscreen-shell-root,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-os-environment,
body.v8e-wp-adminbar-enabled .v8-os-environment {
  position: fixed !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  top: var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px))) !important;
  height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)))) !important;
  max-height: calc(100dvh - var(--v8e-wp-adminbar-offset, var(--v8e-wp-adminbar-measured-offset, var(--v8e-wp-adminbar-fallback-offset, 32px)))) !important;
  min-height: 0 !important;
}
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled) #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled #v8-os-container.v8-platform-ios:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-menubar,
body.v8e-wp-adminbar-enabled .v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-menubar {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  top: 0 !important;
  z-index: 2147482500 !important;
}
@media screen and (max-width: 782px) {
  body.v8e-core-fullscreen-shell.admin-bar:not(.v8e-wp-adminbar-disabled),
  html.wp-toolbar body.v8e-core-fullscreen-shell:not(.v8e-wp-adminbar-disabled),
  body.v8e-wp-adminbar-enabled {
    --v8e-wp-adminbar-fallback-offset: 46px;
  }
}

/* v1.6.692: Public Windows/Android bottom safe-area admin override.
 * Manual clearance affects public desktop Windows and Windows-selected public mobile.
 * Automatic device-safe correction affects public mobile only, so enabling it no
 * longer moves the desktop Windows taskbar by accident. */
.v8e-workspace-root--guest[data-v8e-public="1"] {
  --v8e-public-windows-taskbar-effective-bottom-offset: calc(var(--v8e-public-windows-taskbar-bottom-offset, 0px) + var(--v8e-public-windows-taskbar-device-safe-offset, 0px));
}
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar {
  bottom: var(--v8e-public-windows-taskbar-bottom-offset, 0px) !important;
}
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-desktop {
  bottom: calc(72px + env(safe-area-inset-bottom, 0px) + var(--v8e-public-windows-taskbar-bottom-offset, 0px)) !important;
}
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-start-menu {
  bottom: calc(64px + var(--v8e-public-windows-taskbar-bottom-offset, 0px)) !important;
}
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav,
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-mobile-safe="1"] #v8-os-container.v8-device-phone.v8-selected-win .v8-android-nav,
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-mobile-safe="1"] #v8-os-container.v8-device-phone.v8-platform-android .v8-android-nav {
  bottom: calc(8px + env(safe-area-inset-bottom, 0px) + var(--v8e-public-windows-taskbar-effective-bottom-offset, 0px)) !important;
}
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-device-phone.v8-selected-win .v8-desktop,
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-taskbar-margin="1"] #v8-os-container.v8-device-phone.v8-platform-android .v8-desktop,
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-mobile-safe="1"] #v8-os-container.v8-device-phone.v8-selected-win .v8-desktop,
.v8e-workspace-root--guest[data-v8e-public="1"][data-v8e-public-win-mobile-safe="1"] #v8-os-container.v8-device-phone.v8-platform-android .v8-desktop {
  bottom: calc(98px + env(safe-area-inset-bottom, 0px) + var(--v8e-public-windows-taskbar-effective-bottom-offset, 0px)) !important;
}

/* Public guest taskbar offset isolation feature note.
 * Normal browser profiles can retain old unscoped localStorage bottom-offset
 * values after logout. Public desktop must not inherit member/admin shell
 * offsets, unless the explicit public Windows taskbar margin setting is on. */
.v8e-workspace-root--guest[data-v8e-public="1"],
.v8e-workspace-root--guest[data-v8e-public="1"] #v8-os-container {
  --v8e-shell-bottom-offset: 0px !important;
}
.v8e-workspace-root--guest[data-v8e-public="1"]:not([data-v8e-public-win-taskbar-margin="1"]) #v8-os-container.v8-platform-win:not(.v8-device-phone) #v8-taskbar,
.v8e-workspace-root--guest[data-v8e-public="1"]:not([data-v8e-public-win-taskbar-margin="1"]) #v8-os-container.v8-platform-android:not(.v8-device-phone) #v8-taskbar,
.v8e-workspace-root--guest[data-v8e-public="1"]:not([data-v8e-public-win-taskbar-margin="1"]) #v8-os-container.v8-platform-win:not(.v8-device-phone) .v8-taskbar,
.v8e-workspace-root--guest[data-v8e-public="1"]:not([data-v8e-public-win-taskbar-margin="1"]) #v8-os-container.v8-platform-android:not(.v8-device-phone) .v8-taskbar {
  bottom: 0 !important;
}



/* v1.6.956: maximized-window bottom flicker guard.
 * The viewport bus owns usable shell bounds. Keep maximized desktop windows on
 * those stable vars and override older generic max-height rules that used raw
 * 100dvh/100% measurements. This prevents bottom-edge repaint jitter when the
 * taskbar/dock, admin bar, broadcast ticker, or browser visualViewport settles.
 */
#v8-os-container:not(.v8-device-phone) .v8-window.maximized,
.v8-os-environment:not(.v8-device-phone) .v8-window.maximized,
.v8-public-desktop:not(.v8-device-phone) .v8-window.maximized {
  left: 0 !important;
  right: auto !important;
  bottom: auto !important;
  top: var(--v8-shell-usable-top, 0px) !important;
  width: 100% !important;
  max-width: 100% !important;
  height: var(--v8-shell-usable-height, calc(100dvh - var(--v8-shell-bottom-reserve, 74px))) !important;
  max-height: var(--v8-shell-usable-height, calc(100dvh - var(--v8-shell-bottom-reserve, 74px))) !important;
  min-height: 0 !important;
  transform: none !important;
  will-change: auto !important;
  contain: layout paint;
}

/* v1.6.1004: macOS dock stays compositor-quiescent while desktop icons hover.
 * This is deliberately late-loaded in shell-core.css because shell-core.css is
 * the final CSS asset. Desktop icon hover no longer paints a translucent tile
 * on macOS/iPadOS desktop shells, and the dock is frozen unless the pointer is
 * actually inside the dock. Selection still remains visible via existing
 * selected-state rules; drag/drop and dock hover magnification are preserved. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover:not(.selected):not(.v8-ws-selected):not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover:not(.selected):not(.v8-ws-selected):not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover:not(.selected):not(.v8-ws-selected):not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving),
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover:not(.selected):not(.v8-ws-selected):not(.v8-icon-dragging):not(.v8-file-dragging):not(.v8-ws-dragging):not(.v8-ws-moving) {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  filter: none !important;
  opacity: 1 !important;
  transform: translate3d(0,0,0) !important;
  -webkit-transform: translate3d(0,0,0) !important;
  transition: none !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon {
  transition: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
}
#v8-os-container.v8-dock-pointer-outside.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-dock-pointer-outside.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
.v8-os-environment.v8-dock-pointer-outside.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar,
.v8-os-environment.v8-dock-pointer-outside.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar {
  contain: layout style paint !important;
  isolation: isolate !important;
  transform: translate3d(-50%,0,0) !important;
  -webkit-transform: translate3d(-50%,0,0) !important;
  transition: none !important;
  will-change: transform !important;
}
#v8-os-container.v8-dock-pointer-outside.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon:not(.v8-dock-dragging),
#v8-os-container.v8-dock-pointer-outside.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon:not(.v8-dock-dragging),
.v8-os-environment.v8-dock-pointer-outside.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon:not(.v8-dock-dragging),
.v8-os-environment.v8-dock-pointer-outside.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon:not(.v8-dock-dragging) {
  --v8-scale: 1 !important;
  --v8-lift: 0px !important;
  font-size: 1.55rem !important;
  transform: translate3d(0,0,0) scale(1) !important;
  -webkit-transform: translate3d(0,0,0) scale(1) !important;
  transition: none !important;
  animation: none !important;
  contain: layout style paint !important;
  will-change: transform !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}

/* v1.6.1004: macOS dock static-outside hardening.
 * Desktop icon hover must not wake, rescale, animate, or repaint the bottom dock.
 * The prior fixes removed desktop hover visuals, but Chromium on Android/desktop
 * still repainted dock icons because the dock remained a transform/transition
 * participant while the pointer crossed desktop icons. Freeze the dock whenever
 * the pointer is outside it; allow normal dock behavior only after the dock's own
 * mouseenter marks v8-dock-pointer-inside. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar {
  transform: translate3d(-50%,0,0) !important;
  -webkit-transform: translate3d(-50%,0,0) !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  isolation: isolate !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon {
  --v8-scale: 1 !important;
  --v8-lift: 0px !important;
  transform: translate3d(0,0,0) scale(1) !important;
  -webkit-transform: translate3d(0,0,0) scale(1) !important;
  transition: none !important;
  animation: none !important;
  filter: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-pointer-inside):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon::before {
  transition: none !important;
  animation: none !important;
  opacity: 0 !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon {
  pointer-events: auto !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
}

/* v1.6.1004: macOS dock-layout regression rollback + safe desktop hover glow.
 * v1.6.1003 overreached by forcing the macOS dock/taskbar to fixed geometry and
 * by changing custom desktop icons from absolute to relative positioning. That
 * broke icon placement/offscreen clamping. This pass intentionally does not own
 * dock geometry. It restores only an icon-local hover/selected glow, preserving
 * absolute custom icon coordinates and the existing macOS dock placement rules. */
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop:not(.v8-custom-icon-layout) .v8-desktop-icon {
  position: relative !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon {
  isolation: isolate !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  -webkit-transform: none !important;
  transition: none !important;
  will-change: auto !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon > *,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon > *,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon > *,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon > * {
  position: relative;
  z-index: 1;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: 12px;
  border: 1px solid transparent;
  background: transparent;
  box-shadow: none;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(0,0,0);
  -webkit-transform: translate3d(0,0,0);
  transition: opacity 0.12s ease;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon:hover::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon:hover::before {
  opacity: 1;
  background: rgba(255,255,255,0.14);
  border-color: rgba(255,255,255,0.18);
  box-shadow: 0 10px 24px rgba(0,0,0,0.16);
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.selected::before,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-selected::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.selected::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-selected::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.selected::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-selected::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.selected::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-selected::before {
  opacity: 1;
  background: rgba(56,189,248,0.18);
  border-color: rgba(125,211,252,0.34);
  box-shadow: 0 10px 24px rgba(14,165,233,0.16);
}


/* v1.6.1006: macOS desktop-icon drag dock quiescence.
 * Normal module-icon drags now mark the shell/body with v8-desktop-icon-moving.
 * File Vault drags already mark body.v8-desktop-file-moving, and folder moves mark
 * body.v8-ws-folder-drag-active. While any desktop drag is active, keep the macOS
 * dock static even if pointer capture or elementFromPoint makes Chromium consider
 * the dock hover/magnification layer for a frame. Do not affect dock reordering. */
body.v8-desktop-icon-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-desktop-icon-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-desktop-file-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-desktop-file-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
#v8-os-container.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar,
.v8-os-environment.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar,
.v8-os-environment.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar {
  transform: translate3d(-50%,0,0) !important;
  -webkit-transform: translate3d(-50%,0,0) !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  isolation: isolate !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  pointer-events: none !important;
}
body.v8-desktop-icon-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-desktop-icon-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-desktop-file-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-desktop-file-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
#v8-os-container.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon,
.v8-os-environment.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon,
.v8-os-environment.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon {
  --v8-scale: 1 !important;
  --v8-lift: 0px !important;
  transform: translate3d(0,0,0) scale(1) !important;
  -webkit-transform: translate3d(0,0,0) scale(1) !important;
  transition: none !important;
  animation: none !important;
  filter: none !important;
  will-change: auto !important;
  contain: layout style paint !important;
  backface-visibility: hidden !important;
  -webkit-backface-visibility: hidden !important;
}
body.v8-desktop-icon-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
body.v8-desktop-icon-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
body.v8-desktop-file-moving #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
body.v8-desktop-file-moving #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
body.v8-ws-folder-drag-active #v8-os-container.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
#v8-os-container.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
#v8-os-container.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) #v8-taskbar .v8-taskbar-icon::before,
.v8-os-environment.v8-desktop-icon-moving.v8-platform-mac:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon::before,
.v8-os-environment.v8-desktop-icon-moving.v8-platform-ios:not(.v8-device-phone):not(.v8-dock-reordering) .v8-taskbar .v8-taskbar-icon::before {
  opacity: 0 !important;
  transition: none !important;
  animation: none !important;
}
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-icon-dragging::before,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-file-dragging::before,
#v8-os-container.v8-platform-mac:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-dragging::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-icon-dragging::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-file-dragging::before,
#v8-os-container.v8-platform-ios:not(.v8-device-phone) #v8-desktop .v8-desktop-icon.v8-ws-dragging::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-icon-dragging::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-file-dragging::before,
.v8-os-environment.v8-platform-mac:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-dragging::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-icon-dragging::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-file-dragging::before,
.v8-os-environment.v8-platform-ios:not(.v8-device-phone) .v8-desktop .v8-desktop-icon.v8-ws-dragging::before {
  opacity: 0 !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transition: none !important;
  animation: none !important;
}

/* WordPress owns #wpadminbar descendants. Virii8 only anchors the outer bar and offsets the shell. */

/* Core 1.6.1420 — legacy shell window chrome compatibility guard. */
#v8-os-container.v8-platform-win .v8-window > .v8-window-header,
#v8-os-container.v8-platform-android .v8-window > .v8-window-header {height:46px!important;min-height:46px!important;flex:0 0 46px!important;box-sizing:border-box!important}
#v8-os-container.v8-platform-win .v8-window > .v8-window-header .v8-control-btn,
#v8-os-container.v8-platform-android .v8-window > .v8-window-header .v8-control-btn {width:48px!important;min-width:48px!important;height:46px!important;min-height:46px!important;padding:0!important;display:grid!important;place-items:center!important;line-height:1!important}
.v8-control-btn > svg + .v8-lucide-fallback {display:none!important}

/* v8e-wave2-reduced-motion-contract */
@media (prefers-reduced-motion: reduce) {
  #v8-os-container *, #v8-os-container *::before, #v8-os-container *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

