/* Glasswave Pro: global visual polish layer. Loaded after module styles. */

:root[data-theme="glasswave"] {
    color-scheme: light;
}

body {
    font-family: var(--font-ui);
    color: var(--theme-text);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

body.desktop-page,
body.ai-page,
body.collab-page,
body.lab-home-page {
    background:
        radial-gradient(900px 520px at 86% -12%, rgba(86, 184, 233, 0.26), transparent 62%),
        radial-gradient(720px 460px at 8% 4%, rgba(35, 127, 202, 0.16), transparent 66%),
        radial-gradient(520px 380px at 64% 104%, rgba(40, 169, 154, 0.13), transparent 64%),
        linear-gradient(150deg, var(--theme-bg-page), var(--theme-bg-page-2) 58%, var(--theme-bg-page-3)) !important;
}

button,
input,
select,
textarea,
.btn,
.form-control,
.form-select {
    font-family: var(--font-ui);
}

button,
.btn,
.ws-shell-link,
.desktop-task-chip,
.desktop-pin-chip,
.desktop-icon,
.task-item,
.room-item,
.session-item,
.explorer-row-item,
.editor-tab,
.builder-entry,
.msg,
.bubble {
    transition:
        transform var(--motion-fast) var(--motion-ease-out),
        border-color var(--motion-base) ease,
        background var(--motion-base) ease,
        color var(--motion-base) ease,
        box-shadow var(--motion-base) ease,
        opacity var(--motion-base) ease !important;
}

button:focus-visible,
.btn:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: none !important;
    box-shadow: var(--elevation-focus) !important;
}

input,
select,
textarea,
.form-control,
.form-select,
.theme-select-compact,
.ws-shell-theme-select {
    background: var(--surface-glass-strong) !important;
    color: var(--theme-text) !important;
    border: 1px solid var(--theme-border) !important;
    border-radius: var(--radius-sm) !important;
}

input::placeholder,
textarea::placeholder {
    color: color-mix(in srgb, var(--theme-muted) 78%, #ffffff 22%) !important;
}

code,
pre,
kbd,
samp,
.docker-log,
.docker-inline-editor textarea,
.editor-text,
.builder-summary code,
.builder-browser-current code,
.font-monospace {
    font-family: var(--font-code) !important;
}

.ws-shell-topbar,
.ws-shell-bottom,
.navbar,
.desktop-window,
.desktop-taskbar,
.desktop-start-menu,
.desktop-notify-center,
.desktop-drag-menu,
.desktop-toast,
.ctx-menu,
.tab-hover-panel,
.dialog-card,
.plan-card,
.modal-content {
    backdrop-filter: blur(18px) saturate(1.18);
    -webkit-backdrop-filter: blur(18px) saturate(1.18);
    border-color: var(--glass-border) !important;
    box-shadow: var(--elevation-2), var(--glass-shadow-inset) !important;
}

.ws-shell-topbar,
.navbar,
.desktop-window-header,
.desktop-taskbar,
.desktop-start-head,
.desktop-notify-head,
.chat-head,
.ai-toolbar,
.builder-main-head,
.builder-side-head,
.docker-console-head,
.sidebar-head,
.side-head,
.composer-wrap,
.composer {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.68), rgba(239, 248, 255, 0.48)),
        var(--surface-glass) !important;
    border-color: var(--glass-border) !important;
}

.ws-shell-topbar,
.desktop-taskbar {
    box-shadow: 0 12px 34px rgba(48, 82, 118, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.76) !important;
}

.ws-shell-link,
.ws-shell-theme-select,
.theme-select-compact,
.navbar .btn,
.desk-toolbar button,
.desk-toolbar select,
.desk-toolbar input,
.docker-console-actions button,
.builder-browser-nav button,
.builder-browser-actions button,
.builder-main-head .actions button,
.builder-foot-actions button,
.ghost-btn,
.primary-btn,
.send-btn,
.icon-btn,
.btn-dark,
.btn-outline-secondary,
.btn-outline-light,
.btn-outline-info,
.btn-outline-warning,
.btn-outline-success {
    background: rgba(255, 255, 255, 0.58) !important;
    color: var(--theme-text) !important;
    border: 1px solid var(--theme-border) !important;
    border-radius: var(--radius-sm) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.68), 0 3px 10px rgba(51, 82, 110, 0.06) !important;
}

.ws-shell-link:hover,
.navbar .btn:hover,
.desk-toolbar button:hover,
.docker-console-actions button:hover,
.builder-browser-nav button:hover,
.builder-browser-actions button:hover,
.builder-main-head .actions button:hover,
.builder-foot-actions button:hover,
.ghost-btn:hover,
.primary-btn:hover,
.send-btn:hover,
.icon-btn:hover,
.btn:hover {
    transform: translateY(-1px);
    border-color: var(--theme-border-strong) !important;
    background: color-mix(in srgb, var(--theme-accent) 12%, rgba(255, 255, 255, 0.72)) !important;
    box-shadow: var(--elevation-1), inset 0 1px 0 rgba(255, 255, 255, 0.78) !important;
}

.primary-btn,
.send-btn,
.btn-primary,
.quick-actions .primary,
[data-act="new-task"] {
    color: #ffffff !important;
    border-color: color-mix(in srgb, var(--theme-accent) 78%, #ffffff 22%) !important;
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--theme-accent) 86%, #0e5d9d 14%), var(--theme-accent-2)) !important;
    box-shadow: 0 10px 22px rgba(35, 127, 202, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.36) !important;
}

.btn-danger,
.desktop-window-controls .close:hover {
    color: #ffffff !important;
    background: linear-gradient(135deg, #c65362, #e17b7b) !important;
    border-color: #bc4b55 !important;
}

/* Desktop shell */

.desktop-backdrop {
    opacity: 0.78;
    background-image:
        linear-gradient(rgba(35, 127, 202, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(35, 127, 202, 0.045) 1px, transparent 1px),
        radial-gradient(circle at 28% 18%, rgba(255, 255, 255, 0.36), transparent 24%),
        radial-gradient(circle at 72% 72%, rgba(86, 184, 233, 0.11), transparent 30%) !important;
    background-size: 32px 32px, 32px 32px, 100% 100%, 100% 100% !important;
}

.desktop-window {
    border-radius: 18px !important;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(239, 248, 255, 0.6)),
        var(--surface-glass) !important;
    box-shadow: var(--elevation-2), var(--glass-shadow-inset) !important;
    animation: glasswaveWindowIn var(--motion-slow) var(--motion-ease-emphatic);
}

.desktop-window::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background: var(--window-identity, var(--theme-accent));
    opacity: 0.88;
    z-index: 2;
}

.desktop-window.active {
    border-color: color-mix(in srgb, var(--window-identity, var(--theme-accent)) 58%, var(--theme-border) 42%) !important;
    box-shadow:
        0 0 0 1px color-mix(in srgb, var(--window-identity, var(--theme-accent)) 24%, transparent),
        var(--elevation-3),
        var(--glass-shadow-inset) !important;
}

.desktop-window.app-explorer { --window-identity: var(--identity-explorer); }
.desktop-window.app-editor { --window-identity: var(--identity-editor); }
.desktop-window.app-docker,
.desktop-window.app-docker-builder { --window-identity: var(--identity-docker); }
.desktop-window.app-ai { --window-identity: var(--identity-ai); }
.desktop-window.app-collab { --window-identity: var(--identity-collab); }
.desktop-window.app-share { --window-identity: var(--identity-share); }
.desktop-window.app-desktop-settings { --window-identity: var(--identity-settings); }

.desktop-window-title i,
.desktop-task-chip i,
.desktop-pin-chip i {
    color: var(--window-identity, var(--theme-accent));
    filter: drop-shadow(0 2px 6px color-mix(in srgb, currentColor 26%, transparent));
}

.desktop-window.app-explorer .desktop-window-title i,
.desktop-task-chip.app-explorer i,
.desktop-pin-chip.app-explorer i { color: var(--identity-explorer); }
.desktop-window.app-editor .desktop-window-title i,
.desktop-task-chip.app-editor i,
.desktop-pin-chip.app-editor i { color: var(--identity-editor); }
.desktop-window.app-docker .desktop-window-title i,
.desktop-window.app-docker-builder .desktop-window-title i,
.desktop-task-chip.app-docker i,
.desktop-task-chip.app-docker-builder i,
.desktop-pin-chip.app-docker i { color: var(--identity-docker); }
.desktop-window.app-ai .desktop-window-title i,
.desktop-task-chip.app-ai i,
.desktop-pin-chip.app-ai i { color: var(--identity-ai); }
.desktop-window.app-collab .desktop-window-title i,
.desktop-task-chip.app-collab i,
.desktop-pin-chip.app-collab i { color: var(--identity-collab); }

.desktop-window-body,
.desk-app,
.explorer-app,
.editor-app,
.docker-app,
.ai-native,
.collab-native,
.docker-builder-native {
    background: color-mix(in srgb, var(--surface-glass-muted) 78%, #ffffff 22%) !important;
}

.desktop-icon {
    background: rgba(255, 255, 255, 0.42) !important;
    border-radius: 18px !important;
    border-color: rgba(255, 255, 255, 0.34) !important;
    box-shadow: 0 6px 18px rgba(45, 76, 108, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

.desktop-icon:hover {
    transform: translateY(-3px) scale(1.012);
    background: rgba(255, 255, 255, 0.62) !important;
    border-color: var(--theme-border-strong) !important;
    box-shadow: var(--elevation-1), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

.desktop-icon .icon,
.explorer-row-item .icon {
    color: var(--file-color, var(--theme-accent));
    background:
        radial-gradient(circle at 30% 18%, rgba(255, 255, 255, 0.78), transparent 32%),
        color-mix(in srgb, var(--file-color, var(--theme-accent)) 18%, #ffffff 82%) !important;
    border-color: color-mix(in srgb, var(--file-color, var(--theme-accent)) 42%, var(--theme-border) 58%) !important;
}

.desktop-icon.app-explorer,
.desktop-icon.fs-folder,
.explorer-row-item .fs-folder { --file-color: var(--file-folder); }
.desktop-icon.app-editor,
.desktop-icon.fs-code,
.explorer-row-item .fs-code { --file-color: var(--file-code); }
.desktop-icon.app-docker,
.desktop-icon.fs-docker { --file-color: var(--file-docker); }
.desktop-icon.app-ai { --file-color: var(--identity-ai); }
.desktop-icon.app-collab { --file-color: var(--identity-collab); }
.desktop-icon.fs-doc,
.explorer-row-item .fs-doc { --file-color: var(--file-doc); }
.desktop-icon.fs-image,
.explorer-row-item .fs-image { --file-color: var(--file-image); }
.desktop-icon.fs-archive,
.explorer-row-item .fs-archive { --file-color: var(--file-archive); }
.desktop-icon.fs-config,
.explorer-row-item .fs-config { --file-color: var(--file-config); }
.desktop-icon.fs-file,
.explorer-row-item .fs-file { --file-color: var(--file-log); }

.desktop-icon .label,
.explorer-row-item .name,
.editor-tab .tab-title {
    color: var(--theme-text) !important;
    font-weight: 650;
}

.desktop-taskbar {
    border-radius: 16px !important;
    background: rgba(247, 252, 255, 0.64) !important;
}

.desktop-task-chip,
.desktop-pin-chip,
.desktop-start-btn,
.desktop-tray-btn,
.desktop-clock,
.desktop-version-anchor,
.desktop-vdesk-chip {
    background: rgba(255, 255, 255, 0.54) !important;
    border-color: rgba(112, 160, 202, 0.46) !important;
    color: var(--theme-text) !important;
}

.desktop-task-chip.active,
.desktop-pin-chip.active,
.desktop-vdesk-chip.active {
    background: color-mix(in srgb, var(--theme-accent) 16%, #ffffff 84%) !important;
    border-color: color-mix(in srgb, var(--theme-accent) 52%, var(--theme-border) 48%) !important;
    box-shadow: inset 0 -2px 0 var(--theme-accent), 0 8px 18px rgba(35, 127, 202, 0.13) !important;
}

.desktop-resource-strip,
.desktop-start-menu,
.desktop-notify-center,
.desktop-version-pop {
    background: rgba(247, 252, 255, 0.82) !important;
    color: var(--theme-text) !important;
    border-color: var(--glass-border) !important;
}

/* Workspace */

.main-container,
.sidebar,
.editor-area,
.content-body,
.editor-pane,
.pane-content,
#terminal-panel,
.status-bar,
.file-tree,
.grid-container,
#task-list-container,
#task-view-container,
#task-output-preview {
    background: color-mix(in srgb, var(--surface-glass) 82%, #ffffff 18%) !important;
    color: var(--theme-text) !important;
    border-color: var(--glass-border) !important;
}

.editor-tab,
.tab-item,
.task-item,
.task-folder-header,
.file-item,
.grid-item,
.tree-item,
.ctx-item,
.list-group-item {
    color: var(--theme-text-soft) !important;
}

.editor-tab.active,
.tab-item.active,
.task-item.active,
.tree-item.active,
.tree-item.selected,
.grid-item.selected,
.explorer-row-item.selected {
    color: var(--theme-text) !important;
    background: color-mix(in srgb, var(--theme-accent) 16%, rgba(255, 255, 255, 0.78)) !important;
    border-color: color-mix(in srgb, var(--theme-accent) 46%, var(--theme-border) 54%) !important;
}

.tab-hover-panel,
.dropdown-menu,
.dropdown-menu-dark,
.ctx-menu {
    background: rgba(250, 253, 255, 0.92) !important;
    color: var(--theme-text) !important;
    border-color: var(--glass-border) !important;
}

.dropdown-item {
    color: var(--theme-text-soft) !important;
}

.dropdown-item:hover,
.ctx-item:hover,
.tree-item:hover,
.task-item:hover,
.grid-item:hover,
.file-item:hover {
    background: color-mix(in srgb, var(--theme-accent) 12%, rgba(255, 255, 255, 0.72)) !important;
    color: var(--theme-text) !important;
}

#modal-docker .modal-content,
#modal-ai-workbench .modal-content,
#modal-fast-program .modal-content,
#modal-docker-edit .modal-content {
    background: rgba(248, 252, 255, 0.92) !important;
    color: var(--theme-text) !important;
}

#modal-docker .bg-dark,
#modal-docker .bg-black,
#modal-docker .bg-secondary,
#modal-ai-workbench .bg-dark,
#modal-ai-workbench .bg-black,
#modal-fast-program .bg-dark,
#modal-fast-program .bg-black,
#modal-docker-edit .bg-dark {
    background: color-mix(in srgb, var(--surface-glass) 86%, #ffffff 14%) !important;
}

#modal-docker .text-white,
#modal-docker .text-light,
#modal-docker .text-white-50,
#modal-ai-workbench .text-white,
#modal-ai-workbench .text-light,
#modal-ai-workbench .text-white-50,
#modal-fast-program .text-white,
#modal-fast-program .text-light,
#modal-fast-program .text-white-50 {
    color: var(--theme-text) !important;
}

/* AI and Collab */

body[data-theme="glasswave"].ai-page,
body[data-theme="glasswave"].collab-page,
body[data-theme="glasswave"].lab-home-page {
    color-scheme: light;
}

.ai-sidebar,
.chat-panel,
.chat,
.collab-native,
body.collab-page .sidebar,
body.collab-page .chat {
    background: rgba(244, 250, 255, 0.66) !important;
    color: var(--theme-text) !important;
    border-color: var(--glass-border) !important;
}

.session-item,
.room-item,
.presence-item,
.msg,
.bubble,
.tools-panel,
.attach-pop,
.pending-action,
.dialog-card,
.plan-card,
.builder-entry,
.docker-row,
.explorer-row-item,
.editor-path-picker,
.docker-source-picker,
.builder-empty {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.7), rgba(239, 248, 255, 0.54)),
        var(--surface-glass) !important;
    color: var(--theme-text) !important;
    border-color: var(--glass-border) !important;
    box-shadow: 0 8px 22px rgba(45, 76, 108, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.64) !important;
}

.session-item:hover,
.room-item:hover,
.msg:hover,
.builder-entry:hover,
.docker-row:hover,
.explorer-row-item:hover {
    transform: translateY(-1px);
    border-color: var(--theme-border-strong) !important;
    box-shadow: var(--elevation-1), inset 0 1px 0 rgba(255, 255, 255, 0.76) !important;
}

.session-item.active,
.room-item.active,
.builder-entry.selected,
.docker-row.selected {
    border-color: color-mix(in srgb, var(--theme-accent) 54%, var(--theme-border) 46%) !important;
    background: color-mix(in srgb, var(--theme-accent) 13%, rgba(255, 255, 255, 0.82)) !important;
}

.bubble {
    max-width: min(860px, 82%);
    border-radius: 18px 18px 18px 7px !important;
}

.bubble.user {
    border-color: color-mix(in srgb, var(--theme-accent) 45%, var(--theme-border) 55%) !important;
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--theme-accent) 18%, #ffffff 82%), rgba(239, 248, 255, 0.74)) !important;
    border-radius: 18px 18px 7px 18px !important;
}

.bubble.assistant::after,
.bubble.user::after {
    display: none;
}

.bubble .role,
.msg .meta,
.session-meta,
.chat-meta,
.typing,
.config-status,
.builder-status,
.desk-status,
.meta,
.small,
.text-muted {
    color: var(--theme-muted) !important;
}

.bubble .content pre,
.docker-log,
.editor-text,
.builder-workspace-frame,
#docker-preview,
#docker-reqs-content,
#docker-ignore-content,
#docker-env-vars {
    background: var(--surface-code) !important;
    color: #dcecff !important;
    border-color: color-mix(in srgb, var(--theme-accent) 28%, #112235 72%) !important;
}

.status-online {
    color: #176b4a !important;
    border-color: rgba(47, 147, 101, 0.42) !important;
    background: rgba(47, 147, 101, 0.12) !important;
}

.status-away {
    color: #8a5a18 !important;
    border-color: rgba(173, 118, 46, 0.42) !important;
    background: rgba(173, 118, 46, 0.14) !important;
}

.status-offline {
    color: #607088 !important;
    border-color: rgba(96, 112, 136, 0.38) !important;
    background: rgba(96, 112, 136, 0.12) !important;
}

/* Home cards */

body.lab-home-page .card,
body.lab-home-page .item {
    background: rgba(255, 255, 255, 0.68) !important;
    color: var(--theme-text) !important;
    border-color: var(--glass-border) !important;
    box-shadow: var(--elevation-1), var(--glass-shadow-inset) !important;
    backdrop-filter: blur(18px) saturate(1.16);
}

body.lab-home-page .item:hover {
    transform: translateY(-4px);
    box-shadow: var(--elevation-2), var(--glass-shadow-inset) !important;
}

/* Animation rhythm */

@keyframes glasswaveWindowIn {
    from {
        opacity: 0;
        transform: translateY(12px) scale(.982);
        filter: blur(2px);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}

@keyframes glasswaveMenuIn {
    from {
        opacity: 0;
        transform: translateY(8px) scale(.985);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.dropdown-menu,
.ctx-menu,
.desktop-start-menu:not(.hidden),
.desktop-notify-center:not(.hidden),
.attach-pop:not(.hidden),
.tools-panel:not(.hidden) {
    animation: glasswaveMenuIn var(--motion-base) var(--motion-ease-emphatic);
    transform-origin: top center;
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 1ms !important;
    }
}
