@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,600;0,700;1,400&display=swap');
@font-face {
font-family: 'JetBrainsMono Nerd Font';
src: url('assets/fonts/JetBrainsMonoNerdFont-Regular.ttf') format('truetype'),
url('/assets/fonts/JetBrainsMonoNerdFont-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'JetBrainsMono Nerd Font Mono';
src: url('assets/fonts/JetBrainsMonoNerdFontMono-Regular.ttf') format('truetype'),
url('/assets/fonts/JetBrainsMonoNerdFontMono-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Symbols Nerd Font Mono';
src: url('assets/fonts/SymbolsNerdFontMono-Regular.ttf') format('truetype'),
url('/assets/fonts/SymbolsNerdFontMono-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Symbols Nerd Font';
src: url('assets/fonts/SymbolsNerdFont-Regular.ttf') format('truetype'),
url('/assets/fonts/SymbolsNerdFont-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
font-display: swap;
}
:root,
:root[data-theme="charcoal"],
:root[data-theme="amber-charcoal"] {
--bg-dark: #121214;
--bg-panel: #18181b;
--bg-header: #202024;
--bg-active: #27272a;
--bg-hover: #323238;
--bg-selected: rgba(245, 158, 11, 0.18);
--border: #3f3f46;
--border-focus: #f59e0b;
--border-col-divider: rgba(255, 255, 255, 0.05);
--border-col-header-divider: rgba(255, 255, 255, 0.10);
--accent: #f59e0b;
--accent-hover: #fbbf24;
--accent-dark: #d97706;
--accent-subtle: rgba(245, 158, 11, 0.12);
--text-main: #f4f4f5;
--text-muted: #a1a1aa;
--text-dim: #71717a;
--danger: #ef4444;
--success: #10b981;
--info: #38bdf8;
--archive: #f472b6;
--font-mono: 'JetBrainsMono Nerd Font', 'JetBrainsMono Nerd Font Mono', 'Symbols Nerd Font Mono', 'Symbols Nerd Font', 'JetBrains Mono', 'Cascadia Code', 'FiraCode Nerd Font', 'Fira Code', 'Segoe UI Emoji', 'Noto Color Emoji', 'Apple Color Emoji', 'Twemoji', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Segoe UI Emoji', Roboto, 'Helvetica Neue', Arial, 'Noto Color Emoji', 'Apple Color Emoji', 'Twemoji', sans-serif;
--radius: 6px;
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 10px;
--pane-border-width: 1px;
--pane-active-ring-width: 1px;
--shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
}
:root[data-theme="zink"] {
--bg-dark: #fafafa;
--bg-panel: #ffffff;
--bg-header: #f4f4f5;
--bg-active: #e4e4e7;
--bg-hover: #ebecee;
--bg-selected: rgba(245, 158, 11, 0.14);
--border: #d4d4d8;
--border-focus: #d97706;
--border-col-divider: rgba(0, 0, 0, 0.06);
--border-col-header-divider: rgba(0, 0, 0, 0.12);
--accent: #d97706;
--accent-hover: #b45309;
--accent-dark: #92400e;
--accent-subtle: rgba(245, 158, 11, 0.10);
--text-main: #18181b;
--text-muted: #52525b;
--text-dim: #71717a;
--danger: #dc2626;
--success: #059669;
--info: #0284c7;
--archive: #db2777;
--font-mono: 'JetBrainsMono Nerd Font', 'JetBrainsMono Nerd Font Mono', 'Symbols Nerd Font Mono', 'Symbols Nerd Font', 'JetBrains Mono', 'Cascadia Code', 'FiraCode Nerd Font', 'Fira Code', 'Segoe UI Emoji', 'Noto Color Emoji', 'Apple Color Emoji', 'Twemoji', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Segoe UI Emoji', Roboto, 'Helvetica Neue', Arial, 'Noto Color Emoji', 'Apple Color Emoji', 'Twemoji', sans-serif;
--radius: 6px;
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 10px;
--pane-border-width: 1px;
--pane-active-ring-width: 1px;
--shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
user-select: none;
}
input[type="text"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="email"],
input[type="url"],
textarea,
select {
font-family: inherit;
font-size: 12px;
color: var(--text-main);
background-color: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 5px 8px;
transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
outline: none;
box-sizing: border-box;
}
input[type="text"]:focus,
input[type="password"]:focus,
input[type="search"]:focus,
input[type="number"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
textarea:focus,
select:focus {
border-color: var(--border-focus);
box-shadow: 0 0 0 2px var(--accent-subtle);
outline: none;
}
input::placeholder,
textarea::placeholder {
color: var(--text-dim);
opacity: 0.75;
}
input[type="checkbox"] {
appearance: none;
-webkit-appearance: none;
width: 15px;
height: 15px;
min-width: 15px;
min-height: 15px;
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
background-color: var(--bg-dark);
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
vertical-align: middle;
position: relative;
transition: all 0.15s ease;
margin: 0;
outline: none;
flex-shrink: 0;
}
input[type="checkbox"]:hover {
border-color: var(--accent);
background-color: var(--bg-hover);
}
input[type="checkbox"]:checked {
background-color: var(--accent);
border-color: var(--accent);
}
input[type="checkbox"]:checked::after {
content: '';
display: block;
width: 3.5px;
height: 7px;
border: solid #090a0d;
border-width: 0 1.8px 1.8px 0;
transform: rotate(45deg) translate(-0.5px, -0.5px);
}
:root[data-theme="zink"] input[type="checkbox"]:checked::after {
border-color: #ffffff;
}
input[type="checkbox"]:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 1px;
}
input[type="radio"] {
appearance: none;
-webkit-appearance: none;
width: 15px;
height: 15px;
min-width: 15px;
min-height: 15px;
border: 1.5px solid var(--border);
border-radius: 50%;
background-color: var(--bg-dark);
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
vertical-align: middle;
position: relative;
transition: all 0.15s ease;
margin: 0;
outline: none;
flex-shrink: 0;
}
input[type="radio"]:hover {
border-color: var(--accent);
background-color: var(--bg-hover);
}
input[type="radio"]:checked {
border-color: var(--accent);
}
input[type="radio"]:checked::after {
content: '';
display: block;
width: 7px;
height: 7px;
border-radius: 50%;
background-color: var(--accent);
}
input[type="radio"]:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 1px;
}
select {
appearance: none;
-webkit-appearance: none;
height: 28px;
padding: 3px 24px 3px 8px;
cursor: pointer;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23f59e0b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 7px center;
background-size: 11px;
}
:root[data-theme="zink"] select {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23d97706' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}
select option,
select optgroup {
background-color: var(--bg-panel) !important;
color: var(--text-main) !important;
padding: 4px 8px;
}
html {
height: 100%;
height: 100dvh;
height: -webkit-fill-available;
width: 100%;
max-width: 100%;
overflow: hidden !important;
overflow-x: hidden !important;
overscroll-behavior: none;
overscroll-behavior-y: none;
}
body {
font-family: var(--font-sans);
background-color: var(--bg-dark);
color: var(--text-main);
font-size: 13px;
overflow: hidden;
overflow-x: hidden;
height: 100%;
height: 100dvh;
min-height: 100dvh;
min-height: -webkit-fill-available;
overscroll-behavior: none;
overscroll-behavior-y: none;
display: flex;
flex-direction: column;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
max-width: 100%;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.app-header {
background-color: var(--bg-header);
border-bottom: 1px solid var(--border);
height: 44px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 18px;
flex-shrink: 0;
width: 100%;
max-width: 100%;
min-width: 0;
box-sizing: border-box;
overflow: visible;
}
.logo-area {
display: flex;
align-items: center;
gap: 10px;
font-weight: 700;
font-size: 15px;
color: var(--accent);
letter-spacing: 0.5px;
margin-right: auto;
min-width: 0;
flex-shrink: 0;
overflow: visible;
}
.logo-brand-btn {
display: inline-flex;
align-items: center;
gap: 8px;
cursor: pointer;
user-select: none;
border-radius: var(--radius-sm, 4px);
padding: 2px 4px;
transition: opacity 0.15s ease, transform 0.15s ease;
}
.logo-brand-btn img,
.header-logo-img {
height: 28px;
width: 28px;
object-fit: contain;
vertical-align: middle;
flex-shrink: 0;
filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.4));
}
.logo-brand-btn:hover {
opacity: 0.85;
}
.logo-brand-btn:active {
transform: scale(0.97);
}
.header-hostname-badge {
display: inline-flex;
align-items: center;
gap: 4px;
font-weight: 500;
padding: 2px 4px;
height: 22px;
font-size: 11.5px;
border-radius: var(--radius-sm, 4px);
letter-spacing: 0.2px;
font-family: var(--font-mono, monospace);
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
max-width: 240px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
box-sizing: border-box;
margin-top: 2px;
--badge-color: var(--text-muted, #a1a1aa);
--badge-bg: transparent;
--badge-border: transparent;
--badge-hover: rgba(255, 255, 255, 0.05);
--badge-glow: rgba(245, 158, 11, 0.25);
background: transparent;
color: var(--badge-color);
border: 1px solid transparent;
}
.header-hostname-badge:hover {
color: var(--accent, #f59e0b);
}
.header-hostname-badge .header-hostname-chevron,
.header-hostname-badge > i:last-child,
.header-hostname-badge > svg:last-child {
width: 10px;
height: 10px;
opacity: 0.55;
transition: transform 0.18s ease, opacity 0.15s ease, color 0.15s ease;
flex-shrink: 0;
}
.header-hostname-badge:hover .header-hostname-chevron,
.header-hostname-badge:hover > i:last-child,
.header-hostname-badge:hover > svg:last-child {
opacity: 1;
color: var(--accent, #f59e0b);
}
.header-hostname-badge.dropdown-active .header-hostname-chevron,
.header-hostname-badge.dropdown-active > i:last-child,
.header-hostname-badge.dropdown-active > svg:last-child {
transform: rotate(180deg);
opacity: 1;
color: var(--accent, #f59e0b);
}
.header-hostname-badge i,
.header-hostname-badge svg {
width: 11px;
height: 11px;
stroke-width: 2.2;
flex-shrink: 0;
}
.header-hostname-badge.size-sm {
height: 18px;
font-size: 10px;
padding: 1px 3px;
gap: 3px;
}
.header-hostname-badge.size-sm i,
.header-hostname-badge.size-sm svg {
width: 9.5px;
height: 9.5px;
}
.header-hostname-badge.size-md {
height: 22px;
font-size: 11.5px;
padding: 2px 4px;
gap: 4px;
}
.header-hostname-badge.size-lg {
height: 26px;
font-size: 13px;
padding: 3px 6px;
gap: 5px;
}
.header-hostname-badge.size-lg i,
.header-hostname-badge.size-lg svg {
width: 12.5px;
height: 12.5px;
}
.header-hostname-badge.color-amber {
--badge-color: #f59e0b;
--badge-bg: rgba(245, 158, 11, 0.12);
--badge-border: rgba(245, 158, 11, 0.28);
--badge-hover: rgba(245, 158, 11, 0.22);
--badge-glow: rgba(245, 158, 11, 0.35);
}
.header-hostname-badge.color-emerald {
--badge-color: #10b981;
--badge-bg: rgba(16, 185, 129, 0.12);
--badge-border: rgba(16, 185, 129, 0.32);
--badge-hover: rgba(16, 185, 129, 0.22);
--badge-glow: rgba(16, 185, 129, 0.35);
}
.header-hostname-badge.color-sky {
--badge-color: #0ea5e9;
--badge-bg: rgba(14, 165, 233, 0.12);
--badge-border: rgba(14, 165, 233, 0.32);
--badge-hover: rgba(14, 165, 233, 0.22);
--badge-glow: rgba(14, 165, 233, 0.35);
}
.header-hostname-badge.color-purple {
--badge-color: #a855f7;
--badge-bg: rgba(168, 85, 247, 0.12);
--badge-border: rgba(168, 85, 247, 0.32);
--badge-hover: rgba(168, 85, 247, 0.22);
--badge-glow: rgba(168, 85, 247, 0.35);
}
.header-hostname-badge.color-rose {
--badge-color: #f43f5e;
--badge-bg: rgba(244, 63, 94, 0.12);
--badge-border: rgba(244, 63, 94, 0.32);
--badge-hover: rgba(244, 63, 94, 0.22);
--badge-glow: rgba(244, 63, 94, 0.35);
}
.header-hostname-badge.color-orange {
--badge-color: #f97316;
--badge-bg: rgba(249, 115, 22, 0.12);
--badge-border: rgba(249, 115, 22, 0.32);
--badge-hover: rgba(249, 115, 22, 0.22);
--badge-glow: rgba(249, 115, 22, 0.35);
}
.header-hostname-badge.color-cyan {
--badge-color: #06b6d4;
--badge-bg: rgba(6, 182, 212, 0.12);
--badge-border: rgba(6, 182, 212, 0.32);
--badge-hover: rgba(6, 182, 212, 0.22);
--badge-glow: rgba(6, 182, 212, 0.35);
}
.header-hostname-badge.color-slate {
--badge-color: #94a3b8;
--badge-bg: rgba(148, 163, 184, 0.12);
--badge-border: rgba(148, 163, 184, 0.3);
--badge-hover: rgba(148, 163, 184, 0.2);
--badge-glow: rgba(148, 163, 184, 0.3);
}
.header-hostname-badge.color-custom {
--badge-color: var(--custom-badge-color, #f59e0b);
--badge-bg: var(--custom-badge-bg, rgba(245, 158, 11, 0.12));
--badge-border: var(--custom-badge-border, rgba(245, 158, 11, 0.28));
--badge-hover: var(--custom-badge-bg, rgba(245, 158, 11, 0.22));
--badge-glow: var(--custom-badge-glow, rgba(245, 158, 11, 0.35));
}
.header-hostname-badge.style-text {
background: transparent !important;
border: 1px solid transparent !important;
box-shadow: none !important;
color: var(--badge-color, var(--text-muted));
opacity: 0.8;
padding: 1px 4px;
}
.header-hostname-badge.style-text:hover {
background: rgba(255, 255, 255, 0.05) !important;
color: var(--accent, #f59e0b) !important;
opacity: 1;
border-radius: var(--radius-sm, 4px);
}
.header-hostname-badge.style-subtle {
background: var(--badge-bg);
color: var(--badge-color);
border: 1px solid var(--badge-border);
}
.header-hostname-badge.style-subtle:hover {
background: var(--badge-hover);
border-color: var(--badge-color);
}
.header-hostname-badge.style-solid {
background: var(--badge-color);
color: #0d0f12 !important;
font-weight: 700;
border: 1px solid transparent;
}
.header-hostname-badge.style-solid:hover {
filter: brightness(1.1);
box-shadow: 0 2px 8px var(--badge-glow);
}
.header-hostname-badge.style-outline {
background: transparent;
color: var(--badge-color);
border: 1.5px solid var(--badge-color);
}
.header-hostname-badge.style-outline:hover {
background: var(--badge-bg);
}
.header-hostname-badge.style-pill {
border-radius: 999px;
background: var(--badge-bg);
color: var(--badge-color);
border: 1px solid var(--badge-border);
padding-left: 9px;
padding-right: 9px;
}
.header-hostname-badge.style-pill:hover {
background: var(--badge-hover);
border-color: var(--badge-color);
}
.header-hostname-badge.style-glow {
background: var(--badge-bg);
color: var(--badge-color);
border: 1px solid var(--badge-color);
box-shadow: 0 0 10px var(--badge-glow);
}
.header-hostname-badge.style-glow:hover {
background: var(--badge-hover);
box-shadow: 0 0 15px var(--badge-glow);
}
@media (max-width: 480px) {
.header-hostname-badge {
max-width: 120px;
font-size: 10px;
padding: 1px 5px;
}
}
.header-actions {
display: flex;
align-items: center;
gap: 8px;
}
.header-actions-right {
display: flex;
align-items: center;
gap: 8px;
margin-left: auto;
flex-shrink: 0;
min-width: 0;
box-sizing: border-box;
}
.desktop-only {
display: flex;
}
.mobile-only {
display: none !important;
}
@media (max-width: 768px) {
.desktop-only {
display: none !important;
}
.mobile-only {
display: flex !important;
}
}
.btn {
background-color: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-main);
padding: 5px 10px;
border-radius: var(--radius);
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 500;
transition: all 0.15s ease;
}
.btn:hover {
background-color: var(--bg-hover);
border-color: var(--accent);
}
.btn.active {
background-color: var(--accent-subtle);
border-color: var(--accent);
color: var(--accent-hover);
}
.btn.btn-accent {
background-color: var(--accent);
color: #121214;
border-color: var(--accent);
font-weight: 700;
}
.btn.btn-accent:hover {
background-color: var(--accent-hover);
}
.btn.btn-danger {
background-color: var(--danger);
color: #fff;
border-color: var(--danger);
}
.btn-icon {
width: 32px;
height: 32px;
min-width: 32px;
padding: 0 !important;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: var(--radius);
flex-shrink: 0;
box-sizing: border-box;
}
.btn-icon i,
.btn-icon svg,
.btn-icon img {
width: 15px;
height: 15px;
display: block;
}
.paranoid-badge {
display: flex;
align-items: center;
gap: 6px;
padding: 4px 10px;
border-radius: 20px;
background: rgba(245, 158, 11, 0.15);
border: 1px solid var(--accent);
color: var(--accent);
font-weight: 600;
font-size: 11px;
cursor: pointer;
}
.paranoid-badge.disabled {
background: var(--bg-panel);
border-color: var(--border);
color: var(--text-muted);
}
.main-workspace {
flex: 1;
display: flex;
overflow: hidden;
position: relative;
width: 100%;
max-width: 100%;
min-width: 0;
min-height: 0;
box-sizing: border-box;
}
.panes-container {
flex: 1;
display: grid;
gap: 6px;
padding: 6px;
overflow: hidden;
height: 100%;
width: 100%;
max-width: 100%;
min-width: 0;
min-height: 0;
box-sizing: border-box;
}
.panes-container.layout-single {
grid-template-columns: 1fr;
grid-template-rows: 1fr;
}
.panes-container.layout-dual-vertical {
grid-template-columns: minmax(0, var(--pane-split-dual-v-0, 1fr)) minmax(0, var(--pane-split-dual-v-1, 1fr));
grid-template-rows: 1fr;
}
.panes-container.layout-dual-horizontal {
grid-template-columns: 1fr;
grid-template-rows: minmax(0, var(--pane-split-dual-h-0, 1fr)) minmax(0, var(--pane-split-dual-h-1, 1fr));
}
.panes-container.layout-triple {
grid-template-columns: minmax(0, var(--pane-split-triple-0, 1fr)) minmax(0, var(--pane-split-triple-1, 1fr)) minmax(0, var(--pane-split-triple-2, 1fr));
grid-template-rows: 1fr;
}
.panes-container.layout-triple-stacked {
grid-template-columns: minmax(0, var(--pane-split-triplestack-c0, 1fr)) minmax(0, var(--pane-split-triplestack-c1, 1fr));
grid-template-rows: minmax(0, var(--pane-split-triplestack-r0, 1fr)) minmax(0, var(--pane-split-triplestack-r1, 1fr));
}
.panes-container.layout-triple-stacked .pane:nth-child(1) {
grid-column: 1 / 2;
grid-row: 1 / 3;
}
.panes-container.layout-triple-stacked .pane:nth-child(2) {
grid-column: 2 / 3;
grid-row: 1 / 2;
}
.panes-container.layout-triple-stacked .pane:nth-child(3) {
grid-column: 2 / 3;
grid-row: 2 / 3;
}
.panes-container.layout-quad {
grid-template-columns: minmax(0, var(--pane-split-quad-c0, 1fr)) minmax(0, var(--pane-split-quad-c1, 1fr));
grid-template-rows: minmax(0, var(--pane-split-quad-r0, 1fr)) minmax(0, var(--pane-split-quad-r1, 1fr));
}
.pane {
background-color: var(--bg-panel);
border: var(--pane-border-width, 1px) solid transparent;
background-clip: padding-box, border-box;
background-origin: border-box;
background-image:
linear-gradient(var(--bg-panel), var(--bg-panel)),
linear-gradient(var(--pane-border-angle, 45deg), var(--pane-border-c1, var(--border)), var(--pane-border-c2, var(--border)));
border-radius: var(--radius);
display: flex;
flex-direction: column;
overflow: hidden;
position: relative;
transition: background-image 0.2s ease, box-shadow 0.2s ease;
min-width: 0;
min-height: 0;
max-width: 100%;
box-sizing: border-box;
}
.pane.active {
background-image:
linear-gradient(var(--bg-panel), var(--bg-panel)),
linear-gradient(var(--pane-border-angle, 45deg), var(--pane-active-c1, var(--accent)), var(--pane-active-c2, var(--accent)));
box-shadow: 0 0 0 var(--pane-active-ring-width, 1px) var(--pane-active-c1, var(--accent)), 0 0 14px var(--pane-glow, rgba(245, 158, 11, 0.25));
}
.pane-badge[draggable="true"] {
cursor: grab;
user-select: none;
}
.pane-badge[draggable="true"]:active {
cursor: grabbing;
}
.pane-badge.dragging-pane-badge {
opacity: 0.45;
outline: 1px dashed var(--accent);
}
.panes-container.pane-reorder-active .pane {
transition: box-shadow 0.15s ease, border-color 0.15s ease;
}
.panes-container.pane-reorder-active .pane.pane-reorder-target {
border-color: var(--accent) !important;
box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.45), 0 8px 24px rgba(245, 158, 11, 0.15) !important;
background-color: rgba(245, 158, 11, 0.04) !important;
}
.pane-resizer-handle {
position: absolute;
z-index: 45;
display: flex;
align-items: center;
justify-content: center;
user-select: none;
-webkit-user-select: none;
touch-action: none;
background: transparent;
transition: background-color 0.15s ease;
}
.pane-resizer-handle-r {
top: 0;
bottom: 0;
right: 0;
width: 8px;
cursor: col-resize;
}
.pane-resizer-handle-b {
left: 0;
right: 0;
bottom: 0;
height: 8px;
cursor: row-resize;
}
.pane-resizer-handle-corner-br {
right: 0;
bottom: 0;
width: 14px;
height: 14px;
cursor: move;
z-index: 50;
}
.pane-resizer-handle-r .splitter-grip-dots {
width: 3px;
height: 28px;
border-radius: 2px;
background: var(--border);
opacity: 0.55;
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
pointer-events: none;
}
.pane-resizer-handle-b .splitter-grip-dots {
width: 28px;
height: 3px;
border-radius: 2px;
background: var(--border);
opacity: 0.55;
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
pointer-events: none;
}
.pane-resizer-handle-corner-br .splitter-grip-dots {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--border);
opacity: 0.6;
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
pointer-events: none;
}
.pane-resizer-handle:hover .splitter-grip-dots,
.pane-resizer-handle.is-resizing .splitter-grip-dots {
background: var(--accent);
opacity: 1;
box-shadow: 0 0 8px var(--accent-glow, rgba(245, 158, 11, 0.6));
}
.pane-resizer-handle-r:hover .splitter-grip-dots,
.pane-resizer-handle-r.is-resizing .splitter-grip-dots {
height: 42px;
width: 4px;
}
.pane-resizer-handle-b:hover .splitter-grip-dots,
.pane-resizer-handle-b.is-resizing .splitter-grip-dots {
width: 42px;
height: 4px;
}
.pane-resizer-handle-corner-br:hover .splitter-grip-dots,
.pane-resizer-handle-corner-br.is-resizing .splitter-grip-dots {
transform: scale(1.4);
}
body.resizing-panes {
user-select: none !important;
-webkit-user-select: none !important;
}
body.resizing-panes iframe,
body.resizing-panes .pane-main-view,
body.resizing-panes table {
pointer-events: none !important;
}
@media (max-width: 600px) {
body:not(.standalone-mode) .pane-resizer-handle {
display: none !important;
}
}
.pane-header {
background-color: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 4px 6px;
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
min-height: 34px;
width: 100%;
max-width: 100%;
min-width: 0;
box-sizing: border-box;
overflow: hidden;
}
.pane-nav-btns {
display: flex;
align-items: center;
gap: 2px;
height: 26px;
}
.pane-nav-btns button,
.pane-header .btn-icon,
.pane-favorites-wrapper .btn-icon,
.pane-color-wrapper .btn-icon,
.pane-idx-badge,
.pane-quick-transfer-btn,
.pane-upload-btn,
.pane-tools-btn {
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-muted);
cursor: pointer;
padding: 0 !important;
width: 26px !important;
min-width: 26px !important;
max-width: 26px !important;
height: 26px !important;
min-height: 26px !important;
max-height: 26px !important;
border-radius: var(--radius) !important;
font-size: 12px;
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
margin: 0;
line-height: 1;
transition: all 0.15s ease;
flex-shrink: 0;
}
.pane-nav-btns button:hover,
.pane-header .btn-icon:hover,
.pane-favorites-wrapper .btn-icon:hover,
.pane-color-wrapper .btn-icon:hover,
.pane-idx-badge:hover,
.pane-quick-transfer-btn:hover,
.pane-upload-btn:hover,
.pane-tools-btn:hover {
background: var(--bg-hover);
color: var(--text-main);
border-color: var(--accent);
}
.pane-nav-btns button i,
.pane-nav-btns button svg,
.pane-header .btn-icon i,
.pane-header .btn-icon svg,
.pane-quick-transfer-btn i,
.pane-quick-transfer-btn svg,
.pane-upload-btn i,
.pane-upload-btn svg,
.pane-tools-btn i,
.pane-tools-btn svg {
width: 14px;
height: 14px;
display: block;
}
.pane-path-bar {
flex: 1;
display: flex;
align-items: center;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: 4px;
padding: 2px 6px;
overflow: hidden;
height: 26px;
min-width: 0;
box-sizing: border-box;
}
.pane-breadcrumbs {
display: flex;
align-items: center;
gap: 2px;
overflow-x: auto;
white-space: nowrap;
scrollbar-width: none;
font-family: var(--font-mono);
font-size: 11px;
min-width: 0;
flex: 1;
}
.crumb {
color: var(--text-muted);
cursor: pointer;
padding: 1px 3px;
border-radius: 2px;
transition: all 0.1s ease;
}
.crumb:hover {
background: var(--bg-hover);
color: var(--accent);
}
.crumb-sep {
color: var(--text-dim);
padding: 0 1px;
opacity: 0.55;
user-select: none;
}
.pane-refresh-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
min-width: 18px;
min-height: 18px;
padding: 0;
margin-left: 4px;
background: transparent !important;
border: none !important;
box-shadow: none !important;
outline: none !important;
color: var(--text-muted);
opacity: 0.5;
cursor: pointer;
flex-shrink: 0;
transition: opacity 0.15s ease, color 0.15s ease;
user-select: none;
}
.pane-refresh-btn:hover {
opacity: 1;
color: var(--accent, #f59e0b) !important;
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
.pane-refresh-btn:active {
opacity: 1;
color: var(--accent-hover, #fbbf24) !important;
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
.pane-refresh-btn i,
.pane-refresh-btn svg {
width: 12px;
height: 12px;
display: block;
transition: transform 0.25s ease;
}
.pane-refresh-btn.refreshing i,
.pane-refresh-btn.refreshing svg {
animation: paneRefreshSpin 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes paneRefreshSpin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@media (max-width: 1024px) {
.pane-refresh-btn {
display: none !important;
}
}
.pane-tab-strip {
display: flex;
align-items: center;
gap: 3px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 3px 6px 0 6px;
height: 27px;
min-height: 27px;
max-height: 27px;
flex-shrink: 0;
box-sizing: border-box;
overflow: hidden;
user-select: none;
}
.pane-tabs-scroll {
display: flex;
align-items: flex-end;
gap: 3px;
overflow-x: auto;
scrollbar-width: none;
-webkit-overflow-scrolling: touch;
flex: 1;
min-width: 0;
height: 100%;
}
.pane-tabs-scroll::-webkit-scrollbar {
display: none;
}
.pane-tab-item {
display: inline-flex;
align-items: center;
gap: 5px;
height: 24px;
max-height: 24px;
padding: 0 6px 0 8px;
background: rgba(255, 255, 255, 0.03);
border: 1px solid var(--border);
border-bottom: none;
border-radius: 4px 4px 0 0;
color: var(--text-muted);
font-size: 11px;
font-family: var(--font-main);
font-weight: 500;
cursor: pointer;
max-width: 140px;
min-width: 48px;
transition: all 0.12s ease;
flex-shrink: 0;
position: relative;
box-sizing: border-box;
}
.pane-tab-item:hover {
background: var(--bg-hover);
color: var(--text-main);
border-color: rgba(245, 158, 11, 0.3);
}
.pane-tab-item.active {
background: var(--bg-panel);
color: var(--accent);
border-color: var(--border);
border-top: 1.5px solid var(--accent);
font-weight: 600;
}
.pane-tab-icon {
width: 12px;
height: 12px;
display: inline-flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
opacity: 0.8;
}
.pane-tab-title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
min-width: 0;
}
.pane-tab-close {
width: 14px;
height: 14px;
border-radius: 3px;
font-size: 9px;
line-height: 1;
display: inline-flex;
align-items: center;
justify-content: center;
background: transparent;
border: none;
color: var(--text-dim);
opacity: 0.6;
cursor: pointer;
padding: 0;
margin-left: 2px;
transition: all 0.1s ease;
flex-shrink: 0;
}
.pane-tab-close:hover {
background: rgba(239, 68, 68, 0.2);
color: #ef4444;
opacity: 1;
}
.btn-new-tab {
width: 22px;
height: 22px;
border-radius: 4px;
display: inline-flex;
align-items: center;
justify-content: center;
background: transparent;
border: 1px solid transparent;
color: var(--text-muted);
cursor: pointer;
transition: all 0.12s ease;
flex-shrink: 0;
margin-bottom: 2px;
padding: 0;
}
.btn-new-tab:hover {
background: var(--bg-hover);
color: var(--accent);
border-color: var(--border);
}
.btn-new-tab i,
.btn-new-tab svg {
width: 12px;
height: 12px;
}
.pane-path-input {
display: none;
width: 100%;
flex: 1;
min-width: 0;
background: transparent;
border: none;
outline: none;
color: var(--text-main);
font-family: var(--font-mono);
font-size: 11px;
}
.pane-filter-wrapper {
display: flex;
align-items: center;
position: relative;
gap: 4px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: 4px;
padding: 1px 6px;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
animation: fadeIn 0.1s ease-out;
}
.pane-filter-wrapper:focus-within {
border-color: var(--accent);
box-shadow: 0 0 0 1px rgba(245, 158, 11, 0.25);
}
.pane-filter-icon {
width: 12px;
height: 12px;
color: var(--text-muted);
flex-shrink: 0;
}
.pane-quick-filter {
width: 110px;
background: transparent;
border: none;
padding: 3px 2px;
color: var(--text-main);
font-size: 11px;
outline: none;
}
.pane-quick-filter:focus {
outline: none;
}
.pane-filter-clear-btn {
background: transparent;
border: none;
color: var(--text-muted);
font-size: 11px;
cursor: pointer;
padding: 0 2px;
line-height: 1;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 2px;
transition: color 0.1s ease, background 0.1s ease;
}
.pane-filter-clear-btn:hover {
color: var(--text-main);
background: rgba(255, 255, 255, 0.1);
}
.pane-filter-toggle-btn.active,
.pane-tree-btn.active,
.pane-branch-btn.active {
background: rgba(245, 158, 11, 0.2) !important;
color: var(--accent) !important;
border-color: var(--accent) !important;
}
#remote-proto-select,
#bm-select-protocol,
#hetzner-mode {
appearance: none;
-webkit-appearance: none;
font-weight: 600;
font-size: 11.5px;
height: 30px;
padding: 4px 28px 4px 10px;
border-radius: var(--radius);
border: 1px solid rgba(245, 158, 11, 0.35);
background-color: var(--bg-dark);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23f59e0b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 8px center;
background-size: 12px;
cursor: pointer;
transition: all 0.15s ease;
}
#remote-proto-select:focus,
#bm-select-protocol:focus,
#hetzner-mode:focus {
border-color: var(--accent);
box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.2);
}
.pane-content {
flex: 1;
overflow: hidden;
position: relative;
background-color: var(--bg-panel);
display: flex;
flex-direction: column;
min-height: 0;
min-width: 0;
}
.file-table {
width: 100%;
max-width: 100%;
table-layout: fixed;
border-collapse: separate;
border-spacing: 0;
font-size: 12px;
text-align: left;
touch-action: pan-y;
box-sizing: border-box;
}
.file-table thead {
position: sticky;
top: 0;
z-index: 20;
}
.file-table th {
position: sticky;
top: 0;
background-color: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 5px 8px;
color: var(--text-muted);
font-weight: 600;
font-size: 11px;
cursor: pointer;
z-index: 20;
user-select: none;
-webkit-user-select: none;
box-sizing: border-box;
transition: background-color 0.2s ease, backdrop-filter 0.2s ease, -webkit-backdrop-filter 0.2s ease, box-shadow 0.2s ease, border-bottom-color 0.2s ease;
}
.pane-main-view.is-scrolled .file-table th {
background-color: rgba(24, 24, 28, 0.82);
backdrop-filter: blur(12px) saturate(160%);
-webkit-backdrop-filter: blur(12px) saturate(160%);
border-bottom: 1px solid rgba(245, 158, 11, 0.32);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
:root[data-theme="zink"] .pane-main-view.is-scrolled .file-table th {
background-color: rgba(244, 244, 245, 0.85);
border-bottom: 1px solid rgba(217, 119, 6, 0.32);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.10);
}
body.unsticky-col-headers .file-table thead {
position: static !important;
top: auto !important;
}
body.unsticky-col-headers .file-table th {
position: relative !important;
top: auto !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
box-shadow: none !important;
background-color: var(--bg-header) !important;
border-bottom: 1px solid var(--border) !important;
}
.file-table th:not(:last-child) {
border-right: 1px solid var(--border-col-header-divider);
}
.file-table th:hover {
color: var(--accent);
}
.file-row {
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
cursor: pointer;
transition: background-color 0.1s ease;
touch-action: pan-y;
user-select: none;
-webkit-user-select: none;
}
.file-row:hover {
background-color: var(--bg-hover);
}
.file-row.selected {
background-color: var(--bg-selected);
color: var(--accent-hover);
}
.file-row.cursor-focus {
outline: 1px dotted var(--accent);
}
.parent-dir-row,
.parent-dir-card,
.parent-dir-item {
transition: none !important;
user-select: none;
-webkit-user-select: none;
}
.parent-dir-row:hover,
.parent-dir-card:hover,
.parent-dir-item:hover {
background-color: var(--bg-hover) !important;
transition: none !important;
}
.parent-dir-row:active,
.parent-dir-card:active,
.parent-dir-item:active {
background-color: var(--bg-hover) !important;
transition: none !important;
}
.parent-dir-row.selected,
.parent-dir-card.selected,
.parent-dir-item.selected {
background-color: transparent !important;
color: inherit !important;
}
.marquee-selection-box {
position: fixed;
border: 1px solid var(--accent);
background: rgba(245, 158, 11, 0.18);
box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
pointer-events: none;
z-index: 99999;
border-radius: 3px;
box-sizing: border-box;
}
.file-cell {
padding: 0 8px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle !important;
line-height: normal;
box-sizing: border-box;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
}
.file-cell:not(:last-child) {
border-right: 1px solid var(--border-col-divider);
}
.file-table-borderless th,
.file-table-borderless .file-cell {
border-right: none !important;
}
.file-cell-icon {
width: 28px !important;
min-width: 28px !important;
max-width: 28px !important;
padding: 0 4px !important;
text-align: center;
vertical-align: middle !important;
}
.row-icon-wrapper {
width: 24px;
height: 24px;
display: inline-flex;
align-items: center;
justify-content: center;
vertical-align: middle;
border-radius: 50%;
margin: 0 auto;
line-height: 1;
}
.row-icon-wrapper svg,
.row-icon-wrapper i {
display: inline-block;
vertical-align: middle;
}
.file-cell-name {
vertical-align: middle !important;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 13px;
font-weight: 500;
}
.file-name-wrapper {
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
overflow: hidden;
line-height: normal;
}
.file-name-title-row {
display: flex;
align-items: center;
gap: 4px;
overflow: hidden;
min-width: 0;
}
.file-name-text {
display: inline-block;
vertical-align: middle;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: normal;
}
.file-subtext-mobile {
display: none;
}
.file-icon {
font-size: 14px;
flex-shrink: 0;
vertical-align: middle;
}
.file-icon-img {
width: 16px;
height: 16px;
object-fit: contain;
vertical-align: middle;
display: inline-block;
user-select: none;
-webkit-user-drag: none;
}
.file-icon.dir {
color: var(--accent);
}
.file-icon.dir.dir-filled {
fill: var(--accent);
color: var(--accent);
}
.file-icon.dir.dir-empty {
fill: transparent;
color: var(--accent);
stroke: var(--accent);
}
.file-icon.archive { color: #f472b6; }
.file-icon.vault { color: #f59e0b; }
.file-icon.text { color: #60a5fa; }
.file-icon.code { color: #34d399; }
.file-icon.media { color: #a78bfa; }
.file-cell-mono {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
vertical-align: middle !important;
}
.file-table th.col-icon {
width: 28px !important;
min-width: 28px !important;
max-width: 28px !important;
padding: 0 4px !important;
text-align: center;
vertical-align: middle !important;
}
.pane-col-config-btn {
background: var(--bg-dark);
border: 1px solid var(--border);
color: var(--text-muted);
cursor: pointer;
padding: 0;
width: 18px;
height: 18px;
min-width: 18px;
min-height: 18px;
max-width: 18px;
max-height: 18px;
border-radius: 3px;
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
transition: all 0.15s ease;
vertical-align: middle;
}
.pane-col-config-btn i,
.pane-col-config-btn svg {
width: 11px;
height: 11px;
display: block;
}
.pane-col-config-btn:hover {
background: var(--bg-hover);
color: var(--accent);
border-color: var(--accent);
}
.pane-footer {
background-color: var(--bg-header);
border-top: 1px solid var(--border);
padding: 0 8px;
height: 24px;
min-height: 24px;
max-height: 24px;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 11px;
color: var(--text-muted);
flex-shrink: 0;
box-sizing: border-box;
}
.pane-footer-info {
display: flex;
align-items: center;
gap: 8px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
min-width: 0;
}
.pane-footer-counts {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.pane-footer-right {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.pane-footer-size {
white-space: nowrap;
font-family: var(--font-mono);
font-size: 11px;
}
.pane-footer-sep {
width: 1px;
height: 12px;
background-color: var(--border);
opacity: 0.8;
margin: 0 2px;
}
.pane-footer-viewmodes {
display: flex;
align-items: center;
gap: 2px;
}
.pane-footer-view-btn {
background: var(--bg-dark);
border: 1px solid var(--border);
color: var(--text-muted);
cursor: pointer;
padding: 0;
width: 18px;
height: 18px;
min-width: 18px;
min-height: 18px;
max-width: 18px;
max-height: 18px;
border-radius: 3px;
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
transition: all 0.15s ease;
}
.pane-footer-view-btn i,
.pane-footer-view-btn svg {
width: 11px;
height: 11px;
display: block;
stroke: currentColor;
}
.pane-footer-view-btn:hover {
background: var(--bg-hover);
color: var(--text-main);
border-color: var(--accent);
}
.pane-footer-view-btn.active {
background: var(--accent) !important;
color: #111 !important;
border-color: var(--accent) !important;
box-shadow: 0 0 5px rgba(245, 158, 11, 0.4) !important;
}
.pane-footer-view-btn.active i,
.pane-footer-view-btn.active svg {
color: #111 !important;
stroke: #111 !important;
}
.bottom-fkey-bar {
background-color: #09090b;
border-top: 1px solid var(--border);
height: 28px;
display: flex;
align-items: stretch;
flex-shrink: 0;
width: 100%;
max-width: 100%;
min-width: 0;
box-sizing: border-box;
overflow: hidden;
}
.fkey-btn {
flex: 1;
background: transparent;
border: none;
border-right: 1px solid rgba(255, 255, 255, 0.08);
color: var(--text-muted);
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
font-size: 11px;
cursor: pointer;
transition: background 0.15s ease;
}
.fkey-btn:hover {
background: var(--bg-hover);
color: var(--text-main);
}
.fkey-btn span.fkey-num {
color: var(--accent);
font-weight: 700;
font-family: var(--font-mono);
}
.modal-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.75);
backdrop-filter: blur(3px);
z-index: 2800;
align-items: center;
justify-content: center;
}
.modal-overlay.active {
display: flex;
}
#about-modal {
z-index: 3500 !important;
}
.modal-box {
background-color: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: var(--shadow);
display: flex;
flex-direction: column;
max-height: 90vh;
overflow: hidden;
}
.modal-header {
background-color: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 10px 16px;
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 600;
}
.modal-header > button.btn-icon,
.modal-header .btn-icon,
.calc-header .btn-icon,
.calc-header-actions .btn-icon,
.terminal-header .btn-icon,
.image-viewer-toolbar .btn-icon,
.doc-viewer-header .btn-icon,
.doc-viewer-actions-right .btn-icon,
.diff-modal-header .btn-icon,
.diff-header-actions .btn-icon,
.task-win-header .btn-icon,
.task-win-controls .btn-task-control,
.editor-header-right .btn-icon,
.editor-header-left .btn-icon,
.notedog-header-actions .btn-icon,
.notedog-header-left .btn-icon {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
min-height: 28px !important;
max-width: 28px !important;
max-height: 28px !important;
padding: 0 !important;
border-radius: var(--radius) !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
box-sizing: border-box !important;
}
.modal-header .btn-icon i,
.modal-header .btn-icon svg,
.calc-header .btn-icon i,
.calc-header .btn-icon svg,
.calc-header-actions .btn-icon i,
.calc-header-actions .btn-icon svg,
.terminal-header .btn-icon i,
.terminal-header .btn-icon svg,
.image-viewer-toolbar .btn-icon i,
.image-viewer-toolbar .btn-icon svg,
.doc-viewer-header .btn-icon i,
.doc-viewer-header .btn-icon svg,
.doc-viewer-actions-right .btn-icon i,
.doc-viewer-actions-right .btn-icon svg,
.diff-modal-header .btn-icon i,
.diff-modal-header .btn-icon svg,
.diff-header-actions .btn-icon i,
.diff-header-actions .btn-icon svg,
.task-win-header .btn-icon i,
.task-win-header .btn-icon svg,
.task-win-controls .btn-task-control i,
.task-win-controls .btn-task-control svg {
width: 14px;
height: 14px;
}
.modal-header button:has(i[data-lucide="minus"]),
.modal-header button:has(svg.lucide-minus),
.modal-header button:has(i[data-lucide="maximize-2"]),
.modal-header button:has(svg.lucide-maximize-2),
.modal-header button:has(i[data-lucide="maximize"]),
.modal-header button:has(svg.lucide-maximize),
.modal-header button:has(i[data-lucide="panel-left-close"]),
.modal-header button:has(svg.lucide-panel-left-close),
.modal-header button:has(i[data-lucide="panel-left-open"]),
.modal-header button:has(svg.lucide-panel-left-open),
.modal-header button:has(i[data-lucide="picture-in-picture"]),
.modal-header button:has(svg.lucide-picture-in-picture),
.modal-header button:has(i[data-lucide="external-link"]),
.modal-header button:has(svg.lucide-external-link),
.modal-header button:has(i[data-lucide="x"]),
.modal-header button:has(svg.lucide-x),
.modal-header > button.btn,
.modal-header > button.btn-icon,
.modal-header .modal-close-btn,
.modal-header .btn-modal-close,
.terminal-header button,
.editor-header button:has(i[data-lucide="panel-left-close"]),
.editor-header button:has(svg.lucide-panel-left-close),
.editor-header button:has(i[data-lucide="x"]),
.editor-header button:has(svg.lucide-x),
.notedog-header button:has(i[data-lucide="panel-left-close"]),
.notedog-header button:has(svg.lucide-panel-left-close),
.notedog-header button:has(i[data-lucide="minus"]),
.notedog-header button:has(svg.lucide-minus),
.notedog-header button:has(i[data-lucide="maximize-2"]),
.notedog-header button:has(svg.lucide-maximize-2),
.notedog-header button:has(i[data-lucide="x"]),
.notedog-header button:has(svg.lucide-x),
.calc-header-actions button,
.image-viewer-toolbar button:has(i[data-lucide="picture-in-picture"]),
.image-viewer-toolbar button:has(svg.lucide-picture-in-picture),
.image-viewer-toolbar button:has(i[data-lucide="x"]),
.image-viewer-toolbar button:has(svg.lucide-x),
.doc-viewer-actions-right button:has(i[data-lucide="picture-in-picture"]),
.doc-viewer-actions-right button:has(svg.lucide-picture-in-picture),
.doc-viewer-actions-right button:has(i[data-lucide="maximize-2"]),
.doc-viewer-actions-right button:has(svg.lucide-maximize-2),
.doc-viewer-actions-right button:has(i[data-lucide="x"]),
.doc-viewer-actions-right button:has(svg.lucide-x),
.diff-modal-header button:has(i[data-lucide="x"]),
.diff-modal-header button:has(svg.lucide-x),
.task-win-controls button,
.btn-task-control,
.modal-close-btn,
.btn-modal-close,
.btn-task-close {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
min-height: 28px !important;
max-width: 28px !important;
max-height: 28px !important;
padding: 0 !important;
margin: 0 !important;
background: transparent !important;
border: 1px solid transparent !important;
border-radius: var(--radius) !important;
color: var(--text-muted) !important;
opacity: 0.7 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
cursor: pointer !important;
box-shadow: none !important;
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1) !important;
flex-shrink: 0;
line-height: 1 !important;
box-sizing: border-box !important;
}
.modal-header button i,
.modal-header button svg,
.terminal-header button i,
.terminal-header button svg,
.editor-header button i,
.editor-header button svg,
.notedog-header button i,
.notedog-header button svg,
.calc-header-actions button i,
.calc-header-actions button svg,
.image-viewer-toolbar button i,
.image-viewer-toolbar button svg,
.doc-viewer-actions-right button i,
.doc-viewer-actions-right button svg,
.diff-modal-header button i,
.diff-modal-header button svg,
.task-win-controls button i,
.task-win-controls button svg,
.btn-task-control i,
.btn-task-control svg,
.modal-close-btn i,
.modal-close-btn svg,
.btn-modal-close i,
.btn-modal-close svg,
.btn-task-close i,
.btn-task-close svg,
.btn i,
.btn svg,
button i,
button svg {
width: 14px !important;
height: 14px !important;
stroke-width: 1.8px !important;
display: block !important;
color: inherit !important;
pointer-events: none !important;
transition: transform 0.15s ease, color 0.15s ease;
}
.modal-header button:has(i[data-lucide="minus"]):hover,
.modal-header button:has(svg.lucide-minus):hover,
.modal-header button:has(i[data-lucide="maximize-2"]):hover,
.modal-header button:has(svg.lucide-maximize-2):hover,
.modal-header button:has(i[data-lucide="maximize"]):hover,
.modal-header button:has(svg.lucide-maximize):hover,
.modal-header button:has(i[data-lucide="panel-left-close"]):hover,
.modal-header button:has(svg.lucide-panel-left-close):hover,
.modal-header button:has(i[data-lucide="panel-left-open"]):hover,
.modal-header button:has(svg.lucide-panel-left-open):hover,
.modal-header button:has(i[data-lucide="picture-in-picture"]):hover,
.modal-header button:has(svg.lucide-picture-in-picture):hover,
.modal-header button:has(i[data-lucide="external-link"]):hover,
.modal-header button:has(svg.lucide-external-link):hover,
.terminal-header button:not(:has(i[data-lucide="x"])):not(:has(svg.lucide-x)):hover,
.editor-header button:has(i[data-lucide="panel-left-close"]):hover,
.editor-header button:has(svg.lucide-panel-left-close):hover,
.notedog-header button:has(i[data-lucide="panel-left-close"]):hover,
.notedog-header button:has(svg.lucide-panel-left-close):hover,
.notedog-header button:has(i[data-lucide="minus"]):hover,
.notedog-header button:has(svg.lucide-minus):hover,
.notedog-header button:has(i[data-lucide="maximize-2"]):hover,
.notedog-header button:has(svg.lucide-maximize-2):hover,
.calc-header-actions button:not(:has(i[data-lucide="x"])):not(:has(svg.lucide-x)):hover,
.image-viewer-toolbar button:has(i[data-lucide="picture-in-picture"]):hover,
.image-viewer-toolbar button:has(svg.lucide-picture-in-picture):hover,
.doc-viewer-actions-right button:has(i[data-lucide="picture-in-picture"]):hover,
.doc-viewer-actions-right button:has(svg.lucide-picture-in-picture):hover,
.doc-viewer-actions-right button:has(i[data-lucide="maximize-2"]):hover,
.doc-viewer-actions-right button:has(svg.lucide-maximize-2):hover,
.btn-task-control:not(.btn-task-close):hover,
.pane-header .btn-panel-control:not(.modal-close-btn):hover {
opacity: 1 !important;
color: var(--text-main) !important;
background: rgba(255, 255, 255, 0.08) !important;
border-color: rgba(255, 255, 255, 0.15) !important;
}
.modal-header button:has(i[data-lucide="x"]):hover,
.modal-header button:has(svg.lucide-x):hover,
.modal-header .btn:has(i[data-lucide="x"]):hover,
.modal-header .btn:has(svg.lucide-x):hover,
.modal-header .btn-icon:has(i[data-lucide="x"]):hover,
.modal-header .btn-icon:has(svg.lucide-x):hover,
.terminal-header button:has(i[data-lucide="x"]):hover,
.terminal-header button:has(svg.lucide-x):hover,
.editor-header button:has(i[data-lucide="x"]):hover,
.editor-header button:has(svg.lucide-x):hover,
.notedog-header button:has(i[data-lucide="x"]):hover,
.notedog-header button:has(svg.lucide-x):hover,
.calc-header-actions button:has(i[data-lucide="x"]):hover,
.calc-header-actions button:has(svg.lucide-x):hover,
.image-viewer-toolbar button:has(i[data-lucide="x"]):hover,
.image-viewer-toolbar button:has(svg.lucide-x):hover,
.diff-modal-header button:has(i[data-lucide="x"]):hover,
.diff-modal-header button:has(svg.lucide-x):hover,
.modal-close-btn:hover,
.btn-modal-close:hover,
.btn-task-close:hover {
opacity: 1 !important;
color: #fb7185 !important;
background: rgba(244, 63, 94, 0.12) !important;
border-color: rgba(244, 63, 94, 0.2) !important;
}
.modal-header button:hover i,
.modal-header button:hover svg,
.terminal-header button:hover i,
.terminal-header button:hover svg,
.editor-header button:hover i,
.editor-header button:hover svg,
.notedog-header button:hover i,
.notedog-header button:hover svg,
.calc-header-actions button:hover i,
.calc-header-actions button:hover svg,
.image-viewer-toolbar button:hover i,
.image-viewer-toolbar button:hover svg,
.diff-modal-header button:hover i,
.diff-modal-header button:hover svg,
.modal-close-btn:hover i,
.modal-close-btn:hover svg,
.btn-modal-close:hover i,
.btn-modal-close:hover svg,
.btn-task-close:hover i,
.btn-task-close:hover svg {
transform: scale(1.08);
}
.modal-header button:has(i[data-lucide="minus"]):active,
.modal-header button:has(svg.lucide-minus):active,
.modal-header button:has(i[data-lucide="maximize-2"]):active,
.modal-header button:has(svg.lucide-maximize-2):active,
.modal-header button:has(i[data-lucide="panel-left-close"]):active,
.modal-header button:has(svg.lucide-panel-left-close):active,
.modal-header button:has(i[data-lucide="picture-in-picture"]):active,
.modal-header button:has(svg.lucide-picture-in-picture):active,
.modal-header button:has(i[data-lucide="external-link"]):active,
.modal-header button:has(svg.lucide-external-link):active,
.btn-task-control:not(.btn-task-close):active,
.pane-header .btn-panel-control:not(.modal-close-btn):active {
background: rgba(255, 255, 255, 0.16) !important;
transform: scale(0.94) !important;
}
.modal-header button:has(i[data-lucide="x"]):active,
.modal-header button:has(svg.lucide-x):active,
.terminal-header button:has(i[data-lucide="x"]):active,
.terminal-header button:has(svg.lucide-x):active,
.editor-header button:has(i[data-lucide="x"]):active,
.editor-header button:has(svg.lucide-x):active,
.notedog-header button:has(i[data-lucide="x"]):active,
.notedog-header button:has(svg.lucide-x):active,
.calc-header-actions button:has(i[data-lucide="x"]):active,
.calc-header-actions button:has(svg.lucide-x):active,
.image-viewer-toolbar button:has(i[data-lucide="x"]):active,
.image-viewer-toolbar button:has(svg.lucide-x):active,
.diff-modal-header button:has(i[data-lucide="x"]):active,
.diff-modal-header button:has(svg.lucide-x):active,
.modal-close-btn:active,
.btn-modal-close:active,
.btn-task-close:active {
background: rgba(244, 63, 94, 0.22) !important;
color: #f43f5e !important;
transform: scale(0.94) !important;
}
.pane-header .btn-panel-control {
width: 26px !important;
height: 26px !important;
min-width: 26px !important;
min-height: 26px !important;
max-width: 26px !important;
max-height: 26px !important;
border-radius: var(--radius) !important;
padding: 0 !important;
background: transparent !important;
border: 1px solid transparent !important;
color: var(--text-muted) !important;
opacity: 0.7 !important;
}
.pane-header .btn-panel-control i,
.pane-header .btn-panel-control svg {
width: 13px !important;
height: 13px !important;
}
.modal-body {
padding: 16px;
overflow-y: auto;
flex: 1;
}
.modal-footer {
background-color: var(--bg-header);
border-top: 1px solid var(--border);
padding: 10px 16px;
display: flex;
justify-content: flex-end;
gap: 8px;
}
.modal-footer .btn,
.modal-action-btn {
height: 28px;
min-height: 28px;
line-height: normal;
padding: 0 10px;
font-size: 11.5px;
border-radius: var(--radius);
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
box-sizing: border-box;
white-space: nowrap;
}
.modal-footer .btn i,
.modal-footer .btn svg,
.modal-action-btn i,
.modal-action-btn svg {
width: 14px;
height: 14px;
}
.perm-matrix {
width: 100%;
border-collapse: collapse;
margin: 12px 0;
font-size: 12px;
}
.perm-matrix th, .perm-matrix td {
padding: 8px;
text-align: center;
border: 1px solid var(--border);
}
.perm-matrix th {
background: var(--bg-header);
color: var(--accent);
}
.perm-preset-container {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 10px;
}
.perm-chip {
background: var(--bg-header);
border: 1px solid var(--border);
padding: 4px 8px;
border-radius: 4px;
font-size: 11px;
cursor: pointer;
transition: all 0.15s ease;
}
.perm-chip:hover {
border-color: var(--accent);
color: var(--accent);
}
.perm-octal-badge {
font-family: var(--font-mono);
font-size: 20px;
font-weight: 700;
color: var(--accent);
background: var(--bg-dark);
padding: 4px 12px;
border-radius: 6px;
border: 1px solid var(--border);
display: inline-block;
}
.settings-tabs {
display: flex;
align-items: flex-end;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 8px 12px 0 12px;
gap: 4px;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
flex-shrink: 0;
scrollbar-width: none;
-ms-overflow-style: none;
user-select: none;
-webkit-overflow-scrolling: touch;
}
.settings-tabs::-webkit-scrollbar {
display: none;
height: 0px;
width: 0px;
}
.settings-tab-btn {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.06);
border-bottom: 1px solid var(--border);
border-radius: 6px 6px 0 0;
color: var(--text-muted);
padding: 8px 14px;
cursor: pointer;
font-size: 11.5px;
font-weight: 500;
display: inline-flex;
align-items: center;
gap: 6px;
white-space: nowrap;
flex-shrink: 0;
position: relative;
margin-bottom: -1px;
transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.settings-tab-btn:hover {
background: rgba(255, 255, 255, 0.07);
color: var(--text-main);
border-color: rgba(255, 255, 255, 0.12);
border-bottom: 1px solid var(--border);
}
.settings-tab-btn.active {
color: var(--text-main);
background: var(--bg-panel);
border: 1px solid var(--border);
border-top: 2px solid var(--accent);
border-bottom: 1px solid var(--bg-panel);
z-index: 2;
font-weight: 700;
box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.2);
}
.settings-tab-btn i,
.settings-tab-btn svg {
width: 14px;
height: 14px;
flex-shrink: 0;
color: var(--text-muted);
transition: color 0.15s ease;
}
.settings-tab-btn:hover i,
.settings-tab-btn:hover svg {
color: var(--text-main);
}
.settings-tab-btn.active i,
.settings-tab-btn.active svg {
color: var(--accent);
}
.settings-tab-content {
display: none;
padding: 18px 20px;
}
.settings-tab-content.active {
display: block;
animation: fadeIn 0.15s ease;
}
.settings-modal-box {
width: 960px;
max-width: 96vw;
height: 85vh;
max-height: 820px;
display: flex;
flex-direction: column;
overflow: hidden;
padding: 0 !important;
}
.settings-modal-layout {
display: flex;
flex-direction: row;
flex: 1;
min-height: 0;
overflow: hidden;
}
.settings-sidebar {
width: 220px;
min-width: 220px;
background: var(--bg-dark);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
overflow-y: auto;
padding: 12px 8px;
gap: 3px;
user-select: none;
flex-shrink: 0;
scrollbar-width: thin;
}
.settings-sidebar-group-title {
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.8px;
color: var(--text-muted);
padding: 10px 10px 4px 10px;
margin-top: 4px;
}
.settings-sidebar-group-title:first-child {
padding-top: 2px;
margin-top: 0;
}
.settings-nav-btn {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
padding: 8px 12px;
font-size: 12px;
font-weight: 500;
color: var(--text-muted);
background: transparent;
border: 1px solid transparent;
border-radius: var(--radius);
cursor: pointer;
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition: all 0.15s ease;
position: relative;
}
.settings-nav-btn:hover {
background: rgba(255, 255, 255, 0.05);
color: var(--text-main);
border-color: rgba(255, 255, 255, 0.08);
}
.settings-nav-btn.active {
background: rgba(245, 158, 11, 0.12);
color: var(--accent);
font-weight: 700;
border: 1px solid rgba(245, 158, 11, 0.25);
box-shadow: inset 3px 0 0 var(--accent);
}
.settings-nav-btn i,
.settings-nav-btn svg,
.settings-nav-btn img {
width: 15px;
height: 15px;
flex-shrink: 0;
object-fit: contain;
color: var(--text-muted);
transition: color 0.15s ease;
}
.settings-nav-btn:hover i,
.settings-nav-btn:hover svg {
color: var(--text-main);
}
.settings-nav-btn.active i,
.settings-nav-btn.active svg {
color: var(--accent);
}
.settings-content-area {
flex: 1;
min-width: 0;
overflow-y: auto;
padding: 20px 24px;
background: var(--bg-panel);
}
.settings-group-card {
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 16px;
margin-bottom: 16px;
display: flex;
flex-direction: column;
gap: 12px;
}
.settings-card-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 2px;
}
.settings-section-title {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
font-weight: 700;
color: var(--accent);
margin: 0;
}
.settings-section-title i,
.settings-section-title svg,
.settings-section-title img {
width: 16px;
height: 16px;
flex-shrink: 0;
color: var(--accent);
}
.settings-card-desc {
font-size: 11.5px;
color: var(--text-muted);
line-height: 1.45;
margin: 0;
}
.settings-field {
display: flex;
flex-direction: column;
gap: 5px;
}
.settings-field-label {
font-size: 12px;
font-weight: 600;
color: var(--text-main);
display: flex;
align-items: center;
gap: 6px;
margin: 0;
}
.settings-field-hint {
font-size: 11px;
color: var(--text-dim);
line-height: 1.4;
margin-top: 2px;
}
.settings-checkbox-row {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 6px 8px;
border-radius: var(--radius);
cursor: pointer;
user-select: none;
transition: background 0.15s ease;
font-size: 12px;
color: var(--text-main);
line-height: 1.4;
margin: 0;
}
.settings-checkbox-row:hover {
background: var(--bg-hover);
}
.settings-checkbox-row input[type="checkbox"] {
margin-top: 2px;
flex-shrink: 0;
cursor: pointer;
accent-color: var(--accent);
}
.settings-grid-2col {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px;
}
.settings-grid-3col {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12px;
}
@media (max-width: 768px) {
.settings-grid-3col {
grid-template-columns: 1fr;
}
}
.settings-grid-auto {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 10px;
}
.settings-select,
.settings-input {
width: 100%;
height: 28px;
padding: 0 8px;
font-size: 12px;
font-family: inherit;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text-main);
outline: none;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.settings-select:focus,
.settings-input:focus {
border-color: var(--accent);
box-shadow: 0 0 0 1px var(--accent);
}
.settings-color-row {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.settings-color-swatch-input {
display: flex;
align-items: center;
gap: 6px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 3px 8px;
height: 28px;
font-size: 11px;
}
.settings-color-swatch-input input[type="color"] {
width: 20px;
height: 20px;
padding: 0;
border: 1px solid var(--border);
border-radius: 4px;
background: transparent;
cursor: pointer;
}
.settings-color-swatch-input input[type="text"] {
border: none;
background: transparent;
color: var(--text-main);
font-family: var(--font-mono);
font-size: 11px;
width: 65px;
padding: 0;
outline: none;
}
@media (max-width: 640px) {
.settings-modal-box {
width: 100vw !important;
max-width: 100vw !important;
height: 100vh !important;
height: 100dvh !important;
max-height: 100dvh !important;
margin: 0 !important;
padding: 0 !important;
border-radius: 0 !important;
border: none !important;
}
.settings-modal-layout {
flex-direction: column !important;
flex: 1 !important;
min-height: 0 !important;
overflow: hidden !important;
}
.settings-sidebar {
width: 100% !important;
min-width: 100% !important;
max-width: 100% !important;
height: auto !important;
max-height: none !important;
border-right: none !important;
border-bottom: 1px solid var(--border) !important;
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
overflow-x: auto !important;
overflow-y: hidden !important;
white-space: nowrap !important;
padding: 8px 10px !important;
gap: 6px !important;
-webkit-overflow-scrolling: touch !important;
scrollbar-width: none !important;
background: var(--bg-header) !important;
flex-shrink: 0 !important;
}
.settings-sidebar::-webkit-scrollbar {
display: none !important;
height: 0 !important;
}
.settings-sidebar-group-title {
display: none !important;
}
.settings-nav-btn {
display: inline-flex !important;
width: auto !important;
flex-shrink: 0 !important;
padding: 6px 12px !important;
font-size: 11.5px !important;
border-radius: 20px !important;
background: rgba(255, 255, 255, 0.04) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: var(--text-muted) !important;
gap: 6px !important;
box-shadow: none !important;
}
.settings-nav-btn.active {
background: var(--accent) !important;
color: #111 !important;
font-weight: 700 !important;
border-color: var(--accent) !important;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3) !important;
}
.settings-nav-btn.active i,
.settings-nav-btn.active svg {
color: #111 !important;
}
.settings-content-area {
flex: 1 !important;
min-height: 0 !important;
min-width: 0 !important;
overflow-y: auto !important;
padding: 14px 12px !important;
}
.settings-tab-content {
padding: 0 !important;
}
}
@media (min-width: 641px) and (max-width: 1024px) {
.settings-modal-box {
width: 95vw !important;
max-width: 95vw !important;
height: 88vh !important;
max-height: 88vh !important;
padding: 0 !important;
}
.settings-sidebar {
width: 190px !important;
min-width: 190px !important;
padding: 8px 6px !important;
}
.settings-nav-btn {
font-size: 11.5px !important;
padding: 7px 10px !important;
gap: 8px !important;
}
.settings-content-area {
padding: 16px 18px !important;
}
}
.form-group {
margin-bottom: 14px;
}
.form-group label {
display: block;
font-size: 12px;
font-weight: 600;
margin-bottom: 4px;
}
.form-group .form-hint {
font-size: 11px;
color: var(--text-muted);
margin-top: 2px;
}
.floating-editor-window {
position: fixed;
top: 50px;
left: 60px;
width: min(1120px, calc(100vw - 80px));
height: min(740px, calc(100vh - 90px));
max-width: 100vw;
max-height: 100vh;
min-width: 360px;
min-height: 240px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(255, 255, 255, 0.08);
display: flex;
flex-direction: column;
z-index: 1500;
overflow: hidden;
animation: editorWinPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes editorWinPop {
0% { transform: scale(0.96); opacity: 0; }
100% { transform: scale(1); opacity: 1; }
}
.floating-editor-window.maximized {
top: 40px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 72px) !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.editor-pill {
position: fixed;
bottom: 42px;
left: 20px;
z-index: 1800;
display: flex;
align-items: center;
gap: 8px;
background: #181a20;
border: 1px solid var(--accent);
border-radius: 20px;
padding: 6px 14px;
font-family: var(--font-mono);
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6);
cursor: pointer;
user-select: none;
transition: all 0.18s ease;
}
.editor-pill:hover {
transform: translateY(-2px);
background: #222630;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.8), 0 0 12px rgba(245, 158, 11, 0.3);
}
.editor-pill-dirty {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--accent);
}
.win-resize-handle {
position: absolute;
z-index: 30;
}
.win-resize-top {
top: 0; left: 0; right: 0; height: 6px; cursor: n-resize;
}
.win-resize-bottom {
bottom: 0; left: 0; right: 0; height: 6px; cursor: s-resize;
}
.win-resize-left {
top: 0; bottom: 0; left: 0; width: 6px; cursor: w-resize;
}
.win-resize-right {
top: 0; bottom: 0; right: 0; width: 6px; cursor: e-resize;
}
.win-resize-corner {
bottom: 0; right: 0; width: 14px; height: 14px;
display: flex; align-items: flex-end; justify-content: flex-end;
padding: 2px; cursor: nwse-resize;
}
.editor-header {
padding: 6px 12px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
flex-shrink: 0;
user-select: none;
cursor: grab;
min-height: 42px;
}
.editor-header:active {
cursor: grabbing;
}
.editor-header-left,
.editor-header-right {
display: flex;
align-items: center;
gap: 4px;
flex-wrap: nowrap;
}
.editor-header-left button,
.editor-header-left .btn,
.editor-header-left select,
.editor-header-right button,
.editor-header-right .btn,
.editor-header-right select {
height: 28px !important;
line-height: 26px !important;
font-size: 11px !important;
box-sizing: border-box;
cursor: pointer;
}
.editor-header-right .btn-icon,
.editor-header-left .btn-icon {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
min-height: 28px !important;
max-width: 28px !important;
max-height: 28px !important;
padding: 0 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
border-radius: var(--radius) !important;
}
.editor-header-right .btn-icon i,
.editor-header-right .btn-icon svg,
.editor-header-left .btn-icon i,
.editor-header-left .btn-icon svg {
width: 14px;
height: 14px;
}
.editor-header-right #btn-save-editor.btn-accent {
background-color: var(--accent) !important;
color: #121214 !important;
border-color: var(--accent) !important;
}
.editor-header-right #btn-save-editor.btn-accent:hover {
background-color: var(--accent-hover) !important;
border-color: var(--accent-hover) !important;
}
.editor-header-right #btn-save-editor.btn-saved {
background-color: #22c55e !important;
color: #121214 !important;
border-color: #22c55e !important;
}
.editor-header-right .layout-btn-group {
display: flex;
gap: 3px;
align-items: center;
}
.editor-header-right .editor-view-mode-btn {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
min-height: 28px !important;
padding: 0 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-muted);
border-radius: var(--radius) !important;
cursor: pointer;
transition: all 0.15s ease;
}
.editor-header-right .editor-view-mode-btn:hover {
background: var(--bg-hover);
color: var(--text-main);
border-color: var(--border-bright);
}
.editor-header-right .editor-view-mode-btn.active {
background: rgba(245, 158, 11, 0.18) !important;
color: var(--accent) !important;
border-color: var(--accent) !important;
font-weight: 600 !important;
}
.editor-tab-strip {
display: flex;
align-items: center;
background: #14161a;
border-bottom: 1px solid var(--border);
overflow: hidden;
flex-shrink: 0;
height: 26px;
}
.editor-tabs-scroll {
display: flex;
align-items: center;
overflow-x: auto;
scrollbar-width: none;
-webkit-overflow-scrolling: touch;
flex: 1;
height: 100%;
}
.editor-tabs-scroll::-webkit-scrollbar {
display: none;
}
.editor-tab {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 0 10px;
height: 100%;
font-size: 11px;
font-weight: 500;
font-family: var(--font-mono);
background: #181a20;
color: var(--text-muted);
border-right: 1px solid var(--border);
cursor: pointer;
user-select: none;
white-space: nowrap;
transition: all 0.15s ease;
position: relative;
}
.editor-tab:hover {
background: #20232a;
color: var(--text-main);
}
.editor-tab.active {
background: var(--bg-panel);
color: var(--accent);
font-weight: 600;
border-bottom: 2px solid var(--accent);
}
.editor-tab-dirty {
width: 5px;
height: 5px;
border-radius: 50%;
background: var(--accent);
display: inline-block;
}
.editor-tab-close {
width: 14px;
height: 14px;
border-radius: 3px;
display: inline-flex;
align-items: center;
justify-content: center;
opacity: 0.6;
margin-left: 2px;
transition: all 0.15s ease;
}
.editor-tab-close:hover {
opacity: 1;
background: rgba(239, 68, 68, 0.25);
color: #ef4444;
}
.editor-add-tab-btn {
background: transparent;
border: none;
color: var(--text-dim);
width: 26px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
transition: all 0.15s ease;
}
.editor-add-tab-btn:hover {
color: var(--accent);
background: rgba(255, 255, 255, 0.05);
}
.editor-find-bar {
padding: 6px 12px;
background: #1c1e25;
border-bottom: 1px solid var(--border);
flex-shrink: 0;
font-size: 11px;
}
.filter-opt-btn {
padding: 3px 6px !important;
font-size: 10.5px !important;
font-family: var(--font-mono) !important;
min-width: 24px !important;
height: 24px !important;
}
.filter-opt-btn.active {
background: var(--accent) !important;
color: #000 !important;
font-weight: 700 !important;
}
.editor-grid {
display: grid;
grid-template-columns: 1fr;
flex: 1;
min-height: 0;
gap: 4px;
padding: 4px;
background: var(--bg-dark);
overflow: hidden;
}
.editor-grid.dual-vertical {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
}
.editor-grid.dual-horizontal {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr;
}
.editor-grid.split-markdown {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
}
.editor-pane {
display: flex;
flex-direction: column;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
overflow: hidden;
min-height: 0;
position: relative;
}
.editor-pane-header {
display: flex;
align-items: center;
justify-content: space-between;
background: #191b21;
padding: 4px 10px;
font-family: var(--font-mono);
font-size: 11px;
border-bottom: 1px solid var(--border);
flex-shrink: 0;
gap: 8px;
}
.editor-pane-title {
font-weight: 600;
color: var(--text-main);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
}
.editor-pane-tag {
font-size: 9.5px;
color: var(--text-dim);
background: rgba(255, 255, 255, 0.05);
padding: 1px 5px;
border-radius: 3px;
}
.editor-pane-lang-select {
height: 22px;
line-height: 20px;
font-size: 10.5px;
padding: 0 6px;
background: var(--bg-dark);
color: var(--text-main);
border: 1px solid var(--border);
border-radius: 3px;
font-family: var(--font-mono);
cursor: pointer;
outline: none;
max-width: 150px;
}
.editor-pane-lang-select:focus {
border-color: var(--accent);
}
.editor-body-wrapper {
display: flex;
flex: 1;
overflow: hidden;
position: relative;
background: var(--bg-panel);
min-height: 0;
}
.editor-gutter {
width: 48px;
background: #14161a;
color: #52525b;
font-family: var(--font-mono);
font-size: 12px;
line-height: 1.5;
padding: 10px 6px 10px 2px;
text-align: right;
user-select: none;
border-right: 1px solid rgba(255, 255, 255, 0.07);
overflow: hidden;
flex-shrink: 0;
white-space: pre;
}
.editor-textarea {
flex: 1;
background: transparent;
color: var(--text-main);
border: none;
outline: none;
font-family: var(--font-mono);
font-size: 12.5px;
line-height: 1.5;
padding: 10px 12px;
resize: none;
tab-size: 2;
white-space: pre;
overflow-wrap: normal;
overflow: auto;
min-width: 0;
}
.editor-textarea:focus {
outline: none;
}
.markdown-preview-pane {
flex: 1;
background: var(--bg-panel);
color: var(--text-main);
padding: 16px 20px;
overflow-y: auto;
line-height: 1.6;
font-size: 13px;
min-height: 0;
}
.editor-status-bar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 4px 12px;
background: #14161a;
border-top: 1px solid var(--border);
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
flex-shrink: 0;
}
.editor-status-left,
.editor-status-right {
display: flex;
align-items: center;
gap: 8px;
}
.editor-status-lang-picker {
position: relative;
display: inline-flex;
align-items: center;
cursor: pointer;
}
.editor-status-lang-select {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
z-index: 2;
font-family: var(--font-mono);
}
.editor-status-lang-badge {
font-size: 10px;
font-weight: 700;
color: var(--accent);
font-family: var(--font-mono);
text-transform: uppercase;
background: rgba(245, 158, 11, 0.12);
padding: 1px 7px;
border-radius: 4px;
border: 1px solid rgba(245, 158, 11, 0.28);
display: inline-flex;
align-items: center;
gap: 3px;
letter-spacing: 0.5px;
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
}
.editor-status-lang-picker:hover .editor-status-lang-badge {
background: rgba(245, 158, 11, 0.22);
border-color: var(--accent);
box-shadow: 0 0 8px rgba(245, 158, 11, 0.25);
}
.status-sep {
color: var(--border);
opacity: 0.6;
}
.markdown-preview-pane h1 {
font-size: 1.85em;
font-weight: 800;
color: var(--text-main);
border-bottom: 1px solid var(--border);
padding-bottom: 0.3em;
margin-top: 24px;
margin-bottom: 16px;
}
.markdown-preview-pane h2 {
font-size: 1.45em;
font-weight: 700;
color: var(--text-main);
border-bottom: 1px solid var(--border);
padding-bottom: 0.3em;
margin-top: 22px;
margin-bottom: 14px;
}
.markdown-preview-pane h3 {
font-size: 1.2em;
font-weight: 700;
color: var(--accent);
margin-top: 18px;
margin-bottom: 10px;
}
.markdown-preview-pane h4,
.markdown-preview-pane h5,
.markdown-preview-pane h6 {
font-weight: 600;
margin-top: 14px;
margin-bottom: 8px;
}
.markdown-preview-pane p {
margin-top: 0;
margin-bottom: 14px;
line-height: 1.65;
}
.markdown-preview-pane a {
color: var(--accent);
text-decoration: none;
}
.markdown-preview-pane a:hover {
text-decoration: underline;
}
.markdown-preview-pane pre {
background: var(--bg-dark);
padding: 14px 16px;
border-radius: 6px;
font-family: var(--font-mono);
overflow-x: auto;
border: 1px solid var(--border);
margin: 14px 0;
position: relative;
font-size: 12px;
line-height: 1.45;
}
.markdown-preview-pane pre code {
background: transparent !important;
padding: 0 !important;
border-radius: 0 !important;
font-size: 12px !important;
color: inherit;
}
.markdown-preview-pane code {
background: rgba(255, 255, 255, 0.08);
padding: 2px 5px;
border-radius: 4px;
font-family: var(--font-mono);
font-size: 11.5px;
color: #fca5a5;
}
.markdown-preview-pane blockquote {
border-left: 3.5px solid var(--accent);
padding: 4px 14px;
color: var(--text-muted);
background: rgba(245, 158, 11, 0.04);
border-radius: 0 4px 4px 0;
margin: 14px 0;
}
.markdown-preview-pane blockquote p {
margin-bottom: 0;
}
.markdown-preview-pane table {
border-collapse: collapse;
width: max-content;
max-width: 100%;
overflow-x: auto;
display: block;
margin: 16px 0;
border-radius: 6px;
border: 1px solid var(--border);
}
.markdown-preview-pane th,
.markdown-preview-pane td {
padding: 7px 14px;
border: 1px solid var(--border);
font-size: 12.5px;
}
.markdown-preview-pane th {
font-weight: 700;
background: rgba(255, 255, 255, 0.06);
color: var(--text-main);
}
.markdown-preview-pane tr:nth-child(even) {
background: rgba(255, 255, 255, 0.02);
}
.markdown-preview-pane ul,
.markdown-preview-pane ol {
padding-left: 24px;
margin-top: 0;
margin-bottom: 14px;
}
.markdown-preview-pane li {
margin: 3px 0;
}
.markdown-preview-pane li.task-list-item {
list-style-type: none;
margin-left: -20px;
display: flex;
align-items: center;
gap: 8px;
}
.markdown-preview-pane input[type="checkbox"] {
accent-color: var(--accent);
cursor: pointer;
}
.markdown-preview-pane hr {
height: 1px;
border: none;
background: var(--border);
margin: 20px 0;
}
.markdown-preview-pane img {
max-width: 100%;
height: auto;
border-radius: 6px;
margin: 10px 0;
}
.markdown-preview-pane details {
border: 1px solid var(--border);
border-radius: 6px;
padding: 8px 14px;
margin: 12px 0;
background: rgba(0, 0, 0, 0.15);
}
.markdown-preview-pane summary {
cursor: pointer;
font-weight: 600;
color: var(--accent);
outline: none;
user-select: none;
}
.markdown-preview-pane details[open] summary {
margin-bottom: 8px;
border-bottom: 1px solid var(--border);
padding-bottom: 6px;
}
.markdown-preview-pane kbd {
display: inline-block;
padding: 2px 6px;
font-size: 11px;
font-family: var(--font-mono);
color: var(--text-main);
background-color: var(--bg-dark);
border: 1px solid var(--border);
border-radius: 4px;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.35);
}
.markdown-alert {
border-left: 4px solid;
padding: 8px 14px;
margin: 14px 0;
background: rgba(255, 255, 255, 0.03);
border-radius: 0 6px 6px 0;
}
.markdown-preview-pane .mermaid {
background: rgba(0, 0, 0, 0.2);
border: 1px solid var(--border);
border-radius: 6px;
padding: 16px;
margin: 16px 0;
text-align: center;
overflow-x: auto;
}
.diff-container {
font-family: var(--font-mono);
font-size: 12px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
overflow-y: auto;
max-height: 60vh;
}
.diff-line {
display: flex;
padding: 2px 6px;
white-space: pre;
}
.diff-line.insert {
background-color: rgba(16, 185, 129, 0.18);
color: #34d399;
}
.diff-line.delete {
background-color: rgba(239, 68, 68, 0.18);
color: #f87171;
}
.diff-gutter {
width: 50px;
color: var(--text-dim);
text-align: right;
padding-right: 10px;
user-select: none;
}
.context-menu-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.45);
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
z-index: 1990;
}
.context-menu-backdrop.active {
display: block;
}
.context-menu {
display: none;
position: fixed;
background-color: var(--bg-header);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 30px rgba(0,0,0,0.6);
padding: 4px 0;
z-index: 2000;
min-width: 200px;
overflow: visible !important;
}
.context-item {
padding: 6px 12px;
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
font-size: 12px;
color: var(--text-main);
}
.context-item:hover {
background-color: var(--bg-hover);
color: var(--accent);
}
.context-sep {
height: 1px;
background: var(--border);
margin: 4px 0;
}
.inplace-rename-input {
width: 100%;
max-width: calc(100% - 8px);
font-family: inherit;
font-size: inherit;
font-weight: 500;
color: var(--text-main);
background: var(--bg-input, rgba(0, 0, 0, 0.65));
border: 1px solid var(--accent);
border-radius: var(--radius, 4px);
padding: 1px 6px;
outline: none;
box-shadow: 0 0 8px rgba(245, 158, 11, 0.35);
box-sizing: border-box;
z-index: 10;
line-height: normal;
}
.pane.drag-over {
border-color: var(--accent) !important;
background-color: rgba(245, 158, 11, 0.05) !important;
}
@media (pointer: coarse), (max-width: 768px) {
.file-row,
.file-table,
.file-table tbody tr {
-webkit-user-drag: none !important;
user-drag: none !important;
touch-action: pan-y !important;
-webkit-touch-callout: none !important;
}
}
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--border);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--text-muted);
}
.slider-container {
display: flex;
align-items: center;
gap: 12px;
margin-top: 6px;
}
.range-slider {
flex: 1;
accent-color: var(--accent);
cursor: pointer;
height: 6px;
}
.slider-val-badge {
font-family: var(--font-mono);
font-weight: 700;
color: var(--accent);
background: var(--bg-dark);
border: 1px solid var(--border);
padding: 2px 8px;
border-radius: 4px;
min-width: 65px;
text-align: center;
font-size: 12px;
}
html.fkeys-disabled .bottom-fkey-bar,
.bottom-fkey-bar.fkey-hidden {
display: none !important;
}
.terminal-drawer {
position: fixed;
bottom: 28px;
left: 0;
right: 0;
height: 320px;
background: #0d0e11;
border-top: 2px solid var(--accent);
box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.6);
z-index: 1200;
display: none;
flex-direction: column;
transition: height 0.2s ease;
}
.terminal-drawer.active {
display: flex;
}
.terminal-drawer.fullscreen {
height: calc(100vh - 72px);
}
.terminal-header {
background: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 6px 12px;
min-height: 42px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
font-family: var(--font-mono);
box-sizing: border-box;
}
.terminal-body {
flex: 1;
width: 100%;
height: 100%;
box-sizing: border-box;
background: #090a0d;
color: #f4f4f5;
padding: 4px 6px;
font-family: var(--font-mono);
overflow: hidden;
outline: none;
position: relative;
display: flex;
flex-direction: column;
}
.terminal-body .xterm {
flex: 1;
height: 100%;
width: 100%;
padding: 0;
box-sizing: border-box;
}
.terminal-body .xterm-viewport {
overflow-y: auto !important;
}
.terminal-body .xterm-screen {
width: 100% !important;
}
.terminal-cursor {
display: inline-block;
width: 7px;
height: 14px;
background: var(--accent);
vertical-align: middle;
animation: blink 1s step-end infinite;
}
@keyframes blink {
50% { opacity: 0; }
}
.tasks-pill {
position: fixed;
bottom: 36px;
right: 16px;
background: var(--bg-header);
border: 1px solid var(--accent);
padding: 6px 14px;
border-radius: 20px;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
display: none;
align-items: center;
gap: 8px;
font-size: 11px;
color: var(--accent);
cursor: pointer;
z-index: 600;
font-variant-numeric: tabular-nums;
user-select: none;
}
.tasks-pill.active {
display: flex;
}
.context-item.has-submenu {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
}
.context-submenu {
display: none;
position: absolute;
left: calc(100% - 2px);
top: -4px;
background-color: var(--bg-header);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7);
padding: 4px 0;
min-width: 220px;
max-width: 340px;
max-height: min(720px, calc(88vh - 40px));
overflow-y: auto;
z-index: 2500;
}
.submenu-flip-left .context-submenu {
left: auto;
right: calc(100% - 2px);
}
@media (min-width: 769px) {
.context-item.has-submenu:hover > .context-submenu,
.context-item.has-submenu.expanded > .context-submenu {
display: block !important;
}
}
.submenu-header {
padding: 4px 10px;
font-size: 10px;
text-transform: uppercase;
font-weight: 700;
color: var(--accent);
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
@media (max-width: 768px) {
.context-menu {
overflow-x: hidden !important;
max-width: calc(100vw - 20px) !important;
}
.context-item.has-submenu {
flex-wrap: wrap;
align-items: center;
}
.context-item.has-submenu.expanded {
background-color: rgba(245, 158, 11, 0.08);
}
.context-item.has-submenu .submenu-chevron {
transition: transform 0.2s ease;
}
.context-item.has-submenu.expanded .submenu-chevron {
transform: rotate(90deg);
}
.context-submenu {
position: static !important;
display: none !important;
width: 100% !important;
min-width: 100% !important;
max-width: 100% !important;
box-shadow: none !important;
border: none !important;
border-left: 2px solid var(--accent) !important;
border-radius: 0 0 6px 6px !important;
background: rgba(0, 0, 0, 0.28) !important;
margin: 6px 0 2px 8px !important;
padding: 4px 0 !important;
left: auto !important;
top: auto !important;
}
.context-item.has-submenu.expanded > .context-submenu {
display: block !important;
}
}
.image-viewer-box {
width: 90vw;
height: 88vh;
display: flex;
flex-direction: column;
background: #09090b;
}
.image-viewer-toolbar {
position: relative;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 6px 12px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
flex-shrink: 0;
min-height: 42px;
box-sizing: border-box;
user-select: none;
cursor: grab;
}
.image-viewer-toolbar:active {
cursor: grabbing;
}
.image-viewer-viewport {
flex: 1;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
background: repeating-conic-gradient(#141417 0% 25%, #18181b 0% 50%) 50% / 20px 20px;
position: relative;
user-select: none;
}
.image-viewer-img {
max-width: 95%;
max-height: 95%;
object-fit: contain;
transition: transform 0.15s ease-out;
box-shadow: 0 10px 30px rgba(0,0,0,0.8);
border-radius: 2px;
}
.bulk-renamer-box {
width: 820px;
max-height: 85vh;
display: flex;
flex-direction: column;
}
.rename-rule-panel {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 12px;
margin-bottom: 14px;
}
.rename-preview-table-wrap {
flex: 1;
max-height: 280px;
overflow-y: auto;
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--bg-dark);
}
.diff-tag-new {
color: var(--success);
font-weight: 600;
}
.diff-tag-conflict {
color: var(--danger);
font-weight: 700;
background: rgba(239, 68, 68, 0.15);
padding: 2px 6px;
border-radius: 3px;
}
.pane.pane-color-amber {
--pane-border-c1: rgba(245, 158, 11, 0.45);
--pane-border-c2: rgba(249, 115, 22, 0.45);
--pane-active-c1: #f59e0b;
--pane-active-c2: #f97316;
--pane-glow: rgba(245, 158, 11, 0.35);
}
.pane.pane-color-amber .pane-idx-badge {
background: rgba(245, 158, 11, 0.15);
border-color: #f59e0b;
}
.pane.pane-color-amber .pane-idx-badge i,
.pane.pane-color-amber .pane-idx-badge svg {
color: #f59e0b;
}
.pane.pane-color-emerald {
--pane-border-c1: rgba(16, 185, 129, 0.45);
--pane-border-c2: rgba(6, 182, 212, 0.45);
--pane-active-c1: #10b981;
--pane-active-c2: #06b6d4;
--pane-glow: rgba(16, 185, 129, 0.35);
}
.pane.pane-color-emerald .pane-idx-badge {
background: rgba(16, 185, 129, 0.15);
border-color: #10b981;
}
.pane.pane-color-emerald .pane-idx-badge i,
.pane.pane-color-emerald .pane-idx-badge svg {
color: #10b981;
}
.pane.pane-color-sky {
--pane-border-c1: rgba(56, 189, 248, 0.45);
--pane-border-c2: rgba(129, 140, 248, 0.45);
--pane-active-c1: #38bdf8;
--pane-active-c2: #818cf8;
--pane-glow: rgba(56, 189, 248, 0.35);
}
.pane.pane-color-sky .pane-idx-badge {
background: rgba(56, 189, 248, 0.15);
border-color: #38bdf8;
}
.pane.pane-color-sky .pane-idx-badge i,
.pane.pane-color-sky .pane-idx-badge svg {
color: #38bdf8;
}
.pane.pane-color-purple {
--pane-border-c1: rgba(192, 132, 252, 0.45);
--pane-border-c2: rgba(244, 63, 94, 0.45);
--pane-active-c1: #c084fc;
--pane-active-c2: #f43f5e;
--pane-glow: rgba(192, 132, 252, 0.35);
}
.pane.pane-color-purple .pane-idx-badge {
background: rgba(192, 132, 252, 0.15);
border-color: #c084fc;
}
.pane.pane-color-purple .pane-idx-badge i,
.pane.pane-color-purple .pane-idx-badge svg {
color: #c084fc;
}
.pane.pane-color-rose {
--pane-border-c1: rgba(244, 63, 94, 0.45);
--pane-border-c2: rgba(251, 146, 60, 0.45);
--pane-active-c1: #f43f5e;
--pane-active-c2: #fb923c;
--pane-glow: rgba(244, 63, 94, 0.35);
}
.pane.pane-color-rose .pane-idx-badge {
background: rgba(244, 63, 94, 0.15);
border-color: #f43f5e;
}
.pane.pane-color-rose .pane-idx-badge i,
.pane.pane-color-rose .pane-idx-badge svg {
color: #f43f5e;
}
.pane.pane-color-indigo {
--pane-border-c1: rgba(99, 102, 241, 0.45);
--pane-border-c2: rgba(168, 85, 247, 0.45);
--pane-active-c1: #6366f1;
--pane-active-c2: #a855f7;
--pane-glow: rgba(99, 102, 241, 0.35);
}
.pane.pane-color-indigo .pane-idx-badge {
background: rgba(99, 102, 241, 0.15);
border-color: #6366f1;
}
.pane.pane-color-indigo .pane-idx-badge i,
.pane.pane-color-indigo .pane-idx-badge svg {
color: #6366f1;
}
.pane.pane-color-teal {
--pane-border-c1: rgba(20, 184, 166, 0.45);
--pane-border-c2: rgba(16, 185, 129, 0.45);
--pane-active-c1: #14b8a6;
--pane-active-c2: #10b981;
--pane-glow: rgba(20, 184, 166, 0.35);
}
.pane.pane-color-teal .pane-idx-badge {
background: rgba(20, 184, 166, 0.15);
border-color: #14b8a6;
}
.pane.pane-color-teal .pane-idx-badge i,
.pane.pane-color-teal .pane-idx-badge svg {
color: #14b8a6;
}
.pane.pane-color-orange {
--pane-border-c1: rgba(249, 115, 22, 0.45);
--pane-border-c2: rgba(234, 179, 8, 0.45);
--pane-active-c1: #f97316;
--pane-active-c2: #eab308;
--pane-glow: rgba(249, 115, 22, 0.35);
}
.pane.pane-color-orange .pane-idx-badge {
background: rgba(249, 115, 22, 0.15);
border-color: #f97316;
}
.pane.pane-color-orange .pane-idx-badge i,
.pane.pane-color-orange .pane-idx-badge svg {
color: #f97316;
}
.pane.pane-color-custom {
--pane-border-c1: var(--pane-custom-border-c1, var(--pane-custom-border, var(--border)));
--pane-border-c2: var(--pane-custom-border-c2, var(--pane-custom-border, var(--border)));
--pane-active-c1: var(--pane-custom-active-c1, var(--pane-custom-border, var(--accent)));
--pane-active-c2: var(--pane-custom-active-c2, var(--pane-custom-border, var(--accent)));
--pane-glow: var(--pane-custom-glow, rgba(245, 158, 11, 0.35));
}
.pane-favorites-wrapper,
.pane-color-wrapper,
.pane-title-badge-wrapper {
display: inline-flex;
align-items: center;
height: 26px;
position: relative;
flex-shrink: 0;
}
.pane-title-badge {
font-size: 11px;
font-weight: 700;
color: var(--text-muted);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 3px 8px;
height: 26px;
display: inline-flex;
align-items: center;
cursor: pointer;
white-space: nowrap;
transition: all 0.15s ease;
user-select: none;
box-sizing: border-box;
}
.pane-title-badge:hover {
background: rgba(245, 158, 11, 0.15);
color: var(--accent);
border-color: rgba(245, 158, 11, 0.4);
}
.pane-favorites-wrapper .btn-icon,
.pane-color-wrapper .btn-icon,
.pane-idx-badge {
width: 26px;
min-width: 26px;
height: 26px;
padding: 0;
border-radius: var(--radius);
background: var(--bg-panel);
color: var(--text-muted);
border: 1px solid var(--border);
cursor: pointer;
user-select: none;
transition: all 0.15s ease;
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
margin: 0;
line-height: 1;
}
.pane-favorites-wrapper .btn-icon:hover,
.pane-color-wrapper .btn-icon:hover,
.pane-idx-badge:hover {
background: var(--bg-hover);
border-color: var(--accent);
color: var(--accent);
}
.pane-badge-btn {
display: inline-flex;
align-items: center;
gap: 5px;
height: 26px;
min-height: 26px;
padding: 0 8px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 4px;
color: var(--text-main);
font-size: 11px;
font-weight: 700;
cursor: pointer;
user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
touch-action: manipulation;
flex-shrink: 0;
transition: all 0.15s ease;
box-sizing: border-box;
margin-right: 2px;
}
.pane-badge-btn:hover {
background: var(--bg-hover);
border-color: var(--accent);
color: var(--accent);
}
.pane-badge-indicator {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
flex-shrink: 0;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
background: linear-gradient(var(--pane-border-angle, 45deg), var(--pane-active-c1, #f59e0b), var(--pane-active-c2, #f97316));
}
.pane.pane-color-amber .pane-badge-btn { border-color: rgba(245, 158, 11, 0.45); background: rgba(245, 158, 11, 0.12); color: #f59e0b; }
.pane.pane-color-emerald .pane-badge-btn { border-color: rgba(16, 185, 129, 0.45); background: rgba(16, 185, 129, 0.12); color: #10b981; }
.pane.pane-color-sky .pane-badge-btn { border-color: rgba(56, 189, 248, 0.45); background: rgba(56, 189, 248, 0.12); color: #38bdf8; }
.pane.pane-color-purple .pane-badge-btn { border-color: rgba(192, 132, 252, 0.45); background: rgba(192, 132, 252, 0.12); color: #c084fc; }
.pane.pane-color-rose .pane-badge-btn { border-color: rgba(244, 63, 94, 0.45); background: rgba(244, 63, 94, 0.12); color: #f43f5e; }
.pane.pane-color-indigo .pane-badge-btn { border-color: rgba(99, 102, 241, 0.45); background: rgba(99, 102, 241, 0.12); color: #6366f1; }
.pane.pane-color-teal .pane-badge-btn { border-color: rgba(20, 184, 166, 0.45); background: rgba(20, 184, 166, 0.12); color: #14b8a6; }
.pane.pane-color-orange .pane-badge-btn { border-color: rgba(249, 115, 22, 0.45); background: rgba(249, 115, 22, 0.12); color: #f97316; }
.pane.pane-color-custom .pane-badge-btn { border-color: var(--pane-border-c1, var(--border)); color: var(--pane-active-c1, var(--text-main)); background: var(--pane-glow, rgba(255, 255, 255, 0.05)); }
.pane-settings-dropdown {
position: absolute;
top: 100%;
left: 0;
margin-top: 4px;
width: 340px;
max-width: 92vw;
max-height: min(780px, calc(88vh - 60px));
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.75);
z-index: 2500;
display: flex;
flex-direction: column;
}
.desktop-header-tool,
.desktop-only-tool {
display: inline-flex;
}
.mobile-foldable-tool {
display: none;
}
@media (max-width: 1024px) {
.desktop-header-tool,
.desktop-only-tool,
.pane-nav-btns.desktop-only-tool,
.pane-nav-btns {
display: none !important;
}
.mobile-foldable-tool {
display: inline-flex !important;
}
}
.pane-tools-dropdown {
position: absolute;
top: 100%;
right: 0;
margin-top: 4px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.7);
z-index: 2500;
width: 280px;
max-width: 90vw;
max-height: min(780px, calc(88vh - 60px));
overflow: hidden;
animation: fadeInDown 0.15s ease-out;
}
.pane-tools-dropdown .dropdown-item i,
.pane-tools-dropdown .dropdown-item svg {
width: 14px;
height: 14px;
min-width: 14px;
min-height: 14px;
flex-shrink: 0;
color: var(--accent);
display: inline-flex;
align-items: center;
justify-content: center;
}
.pane-upload-dropdown,
.pane-transfer-dropdown {
position: absolute;
top: 100%;
right: 0;
margin-top: 4px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.7);
z-index: 2500;
width: 290px;
max-width: 90vw;
max-height: min(780px, calc(88vh - 60px));
overflow: hidden;
animation: fadeInDown 0.15s ease-out;
}
.pane-upload-dropdown .dropdown-item i,
.pane-upload-dropdown .dropdown-item svg,
.pane-transfer-dropdown .dropdown-item i,
.pane-transfer-dropdown .dropdown-item svg {
width: 16px;
height: 16px;
min-width: 16px;
min-height: 16px;
flex-shrink: 0;
color: var(--accent);
display: inline-flex;
align-items: center;
justify-content: center;
}
.pane-transfer-wrapper {
position: relative;
display: inline-flex;
align-items: center;
}
.pane-transfer-group {
display: inline-flex;
align-items: center;
height: 26px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-sizing: border-box;
overflow: hidden;
transition: all 0.15s ease;
flex-shrink: 0;
}
.pane-transfer-group:hover {
border-color: var(--accent);
}
.pane-transfer-main-btn {
background: transparent !important;
border: none !important;
color: var(--text-muted);
cursor: pointer;
padding: 0 !important;
width: 25px !important;
min-width: 25px !important;
max-width: 25px !important;
height: 24px !important;
min-height: 24px !important;
max-height: 24px !important;
display: inline-flex !important;
align-items: center;
justify-content: center;
transition: all 0.15s ease;
border-radius: 0 !important;
}
.pane-transfer-main-btn:hover {
background: var(--bg-hover) !important;
color: var(--text-main) !important;
}
.pane-transfer-dropdown-btn {
background: transparent !important;
border: none !important;
border-left: 1px solid var(--border) !important;
color: var(--text-muted);
cursor: pointer;
padding: 0 !important;
width: 15px !important;
min-width: 15px !important;
max-width: 15px !important;
height: 24px !important;
min-height: 24px !important;
max-height: 24px !important;
display: inline-flex !important;
align-items: center;
justify-content: center;
transition: all 0.15s ease;
border-radius: 0 !important;
}
.pane-transfer-dropdown-btn:hover {
background: var(--bg-hover) !important;
color: var(--text-main) !important;
}
.spotlight-box {
width: 620px;
max-width: 92vw;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 10px;
box-shadow: 0 20px 48px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(245, 158, 11, 0.25);
overflow: hidden;
display: flex;
flex-direction: column;
animation: spotlightPop 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes spotlightPop {
0% { transform: scale(0.96) translateY(-10px); opacity: 0; }
100% { transform: scale(1) translateY(0); opacity: 1; }
}
.spotlight-input-wrapper {
display: flex;
align-items: center;
padding: 12px 16px;
border-bottom: 1px solid var(--border);
background: var(--bg-header);
gap: 10px;
}
.spotlight-search-icon {
width: 20px;
height: 20px;
color: var(--accent);
flex-shrink: 0;
}
.spotlight-input {
flex: 1;
background: transparent;
border: none;
outline: none;
font-size: 15px;
font-weight: 500;
color: var(--text-main);
font-family: 'Inter', -apple-system, sans-serif;
}
.spotlight-input::placeholder {
color: var(--text-dim);
font-size: 13.5px;
}
.spotlight-clear-btn {
width: 24px !important;
height: 24px !important;
min-width: 24px !important;
padding: 0 !important;
}
.spotlight-categories {
display: flex;
align-items: center;
gap: 6px;
padding: 8px 14px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
overflow-x: auto;
}
.spotlight-cat-btn {
background: transparent;
border: 1px solid transparent;
color: var(--text-muted);
font-size: 11px;
font-weight: 600;
padding: 3px 8px;
border-radius: 4px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 4px;
transition: all 0.15s ease;
white-space: nowrap;
}
.spotlight-cat-btn i, .spotlight-cat-btn svg {
width: 12px;
height: 12px;
}
.spotlight-cat-btn.active, .spotlight-cat-btn:hover {
background: var(--bg-panel);
color: var(--accent);
border-color: var(--border);
}
.spotlight-results {
max-height: 380px;
overflow-y: auto;
padding: 6px;
}
.spotlight-item {
display: flex;
align-items: center;
padding: 8px 12px;
border-radius: 6px;
cursor: pointer;
gap: 12px;
transition: background-color 0.1s ease;
border: 1px solid transparent;
}
.spotlight-item:hover, .spotlight-item.selected {
background: var(--bg-hover);
border-color: rgba(245, 158, 11, 0.3);
}
.spotlight-item-icon {
width: 28px;
height: 28px;
border-radius: 6px;
background: rgba(255, 255, 255, 0.05);
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
color: var(--accent);
flex-shrink: 0;
}
.spotlight-item.selected .spotlight-item-icon {
background: rgba(245, 158, 11, 0.15);
}
.spotlight-item-content {
flex: 1;
min-width: 0;
}
.spotlight-item-title {
font-size: 13px;
font-weight: 600;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.spotlight-item-sub {
font-size: 11px;
color: var(--text-muted);
font-family: var(--font-mono);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 1px;
}
.spotlight-item-badge {
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
padding: 2px 6px;
border-radius: 4px;
background: var(--bg-dark);
color: var(--text-dim);
border: 1px solid var(--border);
flex-shrink: 0;
}
.spotlight-footer {
display: flex;
align-items: center;
gap: 14px;
padding: 8px 14px;
background: var(--bg-header);
border-top: 1px solid var(--border);
font-size: 11px;
color: var(--text-muted);
}
.spotlight-hint {
display: flex;
align-items: center;
}
.spotlight-hint kbd {
font-family: var(--font-mono);
font-size: 10px;
background: var(--bg-dark);
border: 1px solid var(--border);
padding: 1px 4px;
border-radius: 3px;
color: var(--text-main);
margin-right: 4px;
}
.doc-viewer-box {
width: 92vw;
height: 90vh;
max-width: 1400px;
display: flex;
flex-direction: column;
padding: 0 !important;
overflow: hidden;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.8);
position: relative;
}
#doc-viewer-modal.floating-mode,
#image-viewer-modal.floating-mode {
background: transparent !important;
pointer-events: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
#doc-viewer-modal.floating-mode .doc-viewer-box,
#image-viewer-modal.floating-mode .image-viewer-box {
pointer-events: auto !important;
position: fixed !important;
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.65), 0 0 0 1px var(--border);
z-index: 2800;
}
.doc-viewer-box.fullscreen {
width: 100vw !important;
height: 100vh !important;
max-width: 100vw !important;
border-radius: 0 !important;
border: none !important;
left: 0 !important;
top: 0 !important;
}
.image-viewer-box {
position: relative;
}
.image-viewer-box.fullscreen {
left: 0 !important;
top: 0 !important;
}
.btn-tail-live {
background: rgba(16, 185, 129, 0.15) !important;
color: #10b981 !important;
border-color: rgba(16, 185, 129, 0.4) !important;
animation: pulse-tail-live 2s infinite ease-in-out;
}
@keyframes pulse-tail-live {
0%, 100% {
box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4);
}
50% {
box-shadow: 0 0 8px 2px rgba(16, 185, 129, 0.3);
}
}
.doc-viewer-header {
padding: 6px 12px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
flex-shrink: 0;
cursor: grab;
user-select: none;
min-height: 42px;
}
.doc-viewer-header:active {
cursor: grabbing;
}
.doc-viewer-top-row {
display: contents;
}
.doc-viewer-title-group {
display: flex;
align-items: center;
gap: 10px;
min-width: 0;
max-width: 38%;
pointer-events: none;
order: 1;
}
.doc-viewer-toolbar-center {
display: flex;
align-items: center;
gap: 6px;
justify-content: flex-end;
order: 2;
margin-left: auto;
}
.doc-viewer-actions-right {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
order: 3;
}
.doc-viewer-header button,
.doc-viewer-header .btn,
.doc-viewer-header select,
.doc-viewer-header input {
height: 28px !important;
line-height: 26px !important;
font-size: 11px !important;
box-sizing: border-box;
}
.doc-viewer-body {
flex: 1;
overflow: hidden;
position: relative;
background: var(--bg-dark);
}
.doc-view-panel {
width: 100%;
height: 100%;
box-sizing: border-box;
}
.doc-csv-table-wrapper {
width: 100%;
height: 100%;
overflow: auto;
}
.doc-csv-table {
width: 100%;
border-collapse: collapse;
font-family: var(--font-mono);
font-size: 11.5px;
text-align: left;
}
.doc-csv-table th {
position: sticky;
top: 0;
background: var(--bg-header);
color: var(--accent);
font-weight: 700;
padding: 8px 12px;
border-bottom: 2px solid var(--border);
border-right: 1px solid var(--border);
z-index: 10;
white-space: nowrap;
user-select: none;
cursor: pointer;
}
.doc-csv-table th:hover {
background: var(--bg-hover);
}
.doc-csv-table td {
padding: 6px 12px;
border-bottom: 1px solid var(--border);
border-right: 1px solid var(--border);
white-space: nowrap;
color: var(--text-main);
}
.doc-csv-table tr:hover td {
background: var(--bg-hover);
}
.doc-csv-table td.row-num {
color: var(--text-dim);
background: var(--bg-dark);
font-size: 10px;
text-align: right;
width: 40px;
user-select: none;
position: sticky;
left: 0;
z-index: 5;
}
.doc-csv-table th.row-num-header {
position: sticky;
left: 0;
top: 0;
z-index: 15;
width: 40px;
text-align: right;
}
.media-inspector-box {
width: 680px;
max-width: 94vw;
max-height: 88vh;
display: flex;
flex-direction: column;
padding: 0 !important;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.85);
overflow: hidden;
}
.media-inspector-body {
flex: 1;
overflow-y: auto;
padding: 16px;
display: flex;
flex-direction: column;
gap: 16px;
}
.media-inspector-preview-row {
display: flex;
gap: 16px;
padding: 14px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
align-items: center;
}
.media-inspector-thumb-wrapper {
width: 90px;
height: 90px;
min-width: 90px;
border-radius: 6px;
background: var(--bg-panel);
border: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
position: relative;
}
.media-inspector-thumb-wrapper img {
width: 100%;
height: 100%;
object-fit: cover;
}
.media-inspector-quick-details {
flex: 1;
min-width: 0;
}
.inspector-color-swatch {
width: 24px;
height: 24px;
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 0.2);
cursor: pointer;
transition: transform 0.15s ease;
position: relative;
}
.inspector-color-swatch:hover {
transform: scale(1.15);
}
.media-inspector-section {
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 12px 14px;
}
.media-inspector-section-title {
font-size: 11.5px;
font-weight: 700;
color: var(--accent);
text-transform: uppercase;
letter-spacing: 0.5px;
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 10px;
padding-bottom: 6px;
border-bottom: 1px solid var(--border);
}
.media-inspector-section-title i, .media-inspector-section-title svg {
width: 14px;
height: 14px;
}
.media-inspector-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 8px 12px;
}
.inspector-grid-item {
display: flex;
flex-direction: column;
gap: 2px;
}
.inspector-grid-label {
font-size: 10px;
color: var(--text-dim);
text-transform: uppercase;
font-weight: 600;
}
.inspector-grid-value {
font-size: 12px;
color: var(--text-main);
font-family: var(--font-mono);
word-break: break-all;
}
.media-inspector-gps-bar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-top: 10px;
flex-wrap: wrap;
}
.media-inspector-gps-links {
display: flex;
align-items: center;
gap: 6px;
}
.sync-modal-box {
width: 1080px;
max-width: 95vw;
height: 85vh;
min-height: 580px;
max-height: 90vh;
display: flex;
flex-direction: column;
padding: 0 !important;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.85);
overflow: hidden;
}
.sync-top-bar {
padding: 12px 16px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
flex-direction: column;
gap: 10px;
}
.sync-path-selector-row {
display: flex;
align-items: center;
gap: 8px;
}
.sync-path-input-group {
flex: 1;
display: flex;
align-items: center;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 4px;
overflow: hidden;
}
.sync-pane-badge {
padding: 6px 10px;
background: rgba(255, 255, 255, 0.04);
color: var(--accent);
font-size: 10.5px;
font-weight: 700;
white-space: nowrap;
border-right: 1px solid var(--border);
font-family: var(--font-mono);
}
.sync-path-input-group input {
flex: 1;
border: none;
background: transparent;
padding: 6px 10px;
font-size: 11.5px;
font-family: var(--font-mono);
color: var(--text-main);
outline: none;
}
.sync-options-row {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 10px;
}
.sync-mode-selector {
display: flex;
gap: 12px;
font-size: 11.5px;
}
.sync-mode-radio {
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
}
.sync-filter-toggles {
display: flex;
gap: 4px;
}
.sync-filter-btn {
font-size: 10.5px;
padding: 3px 8px;
opacity: 0.75;
}
.sync-filter-btn.active {
opacity: 1;
background: var(--accent) !important;
color: #121214 !important;
font-weight: 700;
}
.sync-grid-container {
flex: 1;
overflow-y: auto;
min-height: 280px;
max-height: 480px;
background: var(--bg-dark);
}
.sync-diff-table {
width: 100%;
border-collapse: collapse;
font-size: 11px;
font-family: var(--font-mono);
}
.sync-diff-table th {
position: sticky;
top: 0;
background: var(--bg-panel);
color: var(--text-muted);
font-weight: 700;
padding: 8px 10px;
border-bottom: 1px solid var(--border);
z-index: 10;
text-transform: uppercase;
font-size: 10px;
}
.sync-diff-table td {
padding: 6px 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
white-space: nowrap;
}
.sync-diff-table tr:hover td {
background: var(--bg-hover);
}
.sync-action-badge {
display: inline-flex;
align-items: center;
justify-content: center;
width: 26px;
height: 22px;
border-radius: 4px;
font-size: 12px;
cursor: pointer;
user-select: none;
transition: transform 0.1s ease;
}
.sync-action-badge:hover {
transform: scale(1.2);
}
.sync-action-badge.action-copy-right {
background: rgba(56, 189, 248, 0.2);
color: var(--info);
border: 1px solid rgba(56, 189, 248, 0.4);
}
.sync-action-badge.action-copy-left {
background: rgba(168, 85, 247, 0.2);
color: #c084fc;
border: 1px solid rgba(168, 85, 247, 0.4);
}
.sync-action-badge.action-identical {
background: rgba(34, 197, 94, 0.15);
color: var(--success);
border: 1px solid rgba(34, 197, 94, 0.3);
}
.sync-action-badge.action-delete-right {
background: rgba(239, 68, 68, 0.2);
color: var(--danger);
border: 1px solid rgba(239, 68, 68, 0.4);
}
.sync-action-badge.action-update-delta {
background: rgba(245, 158, 11, 0.2);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.4);
}
.sync-action-badge.action-archive {
background: rgba(168, 85, 247, 0.2);
color: #c084fc;
border: 1px solid rgba(168, 85, 247, 0.4);
}
.sync-action-badge.action-skip {
background: rgba(255, 255, 255, 0.05);
color: var(--text-dim);
border: 1px solid var(--border);
}
.sync-profile-card {
display: flex;
align-items: flex-start;
gap: 10px;
background: var(--bg-input);
border: 1px solid var(--border);
border-radius: var(--radius, 6px);
padding: 10px 12px;
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
}
.sync-profile-card:hover {
border-color: rgba(245, 158, 11, 0.4);
background: var(--bg-hover);
}
.sync-profile-card input[type="radio"] {
margin-top: 3px;
accent-color: var(--accent);
cursor: pointer;
}
.sync-profile-card.active,
.sync-profile-card:has(input[type="radio"]:checked) {
border-color: var(--accent);
background: rgba(245, 158, 11, 0.1);
box-shadow: 0 0 0 1px var(--accent);
}
.sync-card-title {
font-weight: 700;
font-size: 11.5px;
color: var(--text-main);
margin-bottom: 3px;
display: flex;
align-items: center;
gap: 6px;
}
.sync-card-desc {
font-size: 10.5px;
color: var(--text-muted);
line-height: 1.35;
}
.sync-folder-picker-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 10px;
border-radius: 4px;
background: var(--bg-input);
border: 1px solid var(--border);
cursor: pointer;
font-size: 11.5px;
transition: all 0.15s ease;
}
.sync-folder-picker-item:hover {
background: var(--bg-hover);
border-color: var(--accent);
color: var(--accent);
}
.sync-tabs {
padding: 6px 16px 0 16px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
gap: 4px;
flex-shrink: 0;
}
.sync-template-btn {
background: var(--bg-input);
border: 1px solid var(--border);
color: var(--text-main);
border-radius: var(--radius-sm, 4px);
padding: 2px 7px;
font-size: 10.5px;
font-weight: 600;
cursor: pointer;
transition: all 0.15s ease;
}
.sync-template-btn:hover {
border-color: var(--accent);
color: var(--accent);
background: var(--bg-hover);
transform: translateY(-1px);
}
.sync-chip {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 7px;
border-radius: 12px;
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-muted);
font-size: 10.5px;
font-family: var(--font-mono);
cursor: pointer;
transition: all 0.12s ease;
user-select: none;
}
.sync-chip:hover {
border-color: var(--accent);
color: var(--text-main);
}
.sync-chip.active {
background: rgba(239, 68, 68, 0.15);
border-color: rgba(239, 68, 68, 0.4);
color: #f87171;
font-weight: 600;
}
.sync-chip-sm {
font-size: 9.5px;
padding: 1px 6px;
border-radius: 4px;
}
.sync-custom-tag {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 7px;
border-radius: 12px;
background: rgba(245, 158, 11, 0.12);
border: 1px solid rgba(245, 158, 11, 0.35);
color: var(--accent);
font-size: 10.5px;
font-family: var(--font-mono);
}
.sync-custom-tag-remove {
cursor: pointer;
font-weight: 700;
margin-left: 2px;
color: var(--accent);
opacity: 0.7;
}
.sync-custom-tag-remove:hover {
opacity: 1;
color: #ef4444;
}
.disk-usage-box {
width: 920px;
max-width: 95vw;
height: 88vh;
max-height: 88vh;
display: flex;
flex-direction: column;
padding: 0 !important;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.85);
overflow: hidden;
transition: width 0.2s ease, height 0.2s ease;
}
.disk-usage-box.maximized {
width: 98vw !important;
max-width: 98vw !important;
height: 96vh !important;
max-height: 96vh !important;
}
.du-modal-header {
height: 42px;
min-height: 42px;
cursor: grab;
padding: 0 14px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
user-select: none;
}
.du-modal-header:active {
cursor: grabbing;
}
.du-top-bar {
padding: 8px 14px;
background: var(--bg-panel);
border-bottom: 1px solid var(--border);
display: flex;
flex-direction: column;
gap: 6px;
}
.du-breadcrumbs {
display: flex;
align-items: center;
gap: 4px;
overflow-x: auto;
white-space: nowrap;
scrollbar-width: thin;
}
.du-crumb-btn {
display: inline-flex;
align-items: center;
gap: 4px;
background: transparent;
border: 1px solid transparent;
color: var(--text-muted);
font-size: 11px;
font-weight: 600;
padding: 2px 6px;
border-radius: 4px;
cursor: pointer;
transition: all 0.15s ease;
}
.du-crumb-btn:hover {
background: var(--bg-hover);
border-color: var(--border);
color: var(--accent);
}
.du-crumb-btn.active {
color: var(--text-main);
background: rgba(245, 158, 11, 0.12);
border-color: rgba(245, 158, 11, 0.25);
}
.du-crumb-sep {
color: var(--text-dim);
font-size: 10px;
user-select: none;
}
.du-stats-summary {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 8px;
padding: 8px 14px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
}
.du-stat-card {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 4px;
padding: 6px 10px;
display: flex;
flex-direction: column;
gap: 1px;
}
.du-stat-label {
font-size: 9.5px;
color: var(--text-dim);
text-transform: uppercase;
font-weight: 700;
}
.du-stat-val {
font-size: 14px;
font-weight: 800;
color: var(--accent);
font-family: var(--font-mono);
}
.du-multi-bar {
height: 8px;
width: 100%;
display: flex;
background: rgba(255, 255, 255, 0.05);
overflow: hidden;
border-bottom: 1px solid var(--border);
}
.du-bar-segment {
height: 100%;
transition: opacity 0.15s ease;
cursor: pointer;
}
.du-bar-segment:hover {
filter: brightness(1.25);
}
.du-content-body {
flex: 1;
overflow-y: auto;
padding: 14px;
}
.du-treemap-container {
display: flex;
flex-wrap: wrap;
gap: 6px;
min-height: 140px;
padding: 8px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: 6px;
margin-bottom: 12px;
}
.du-treemap-tile {
min-height: 58px;
border-radius: 5px;
border: 1px solid rgba(255, 255, 255, 0.1);
padding: 6px 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
cursor: pointer;
transition: transform 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
user-select: none;
overflow: hidden;
position: relative;
}
.du-treemap-tile:hover {
transform: translateY(-2px);
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4);
border-color: var(--accent);
z-index: 2;
}
.du-treemap-title {
font-size: 11.5px;
font-weight: 700;
color: #ffffff;
display: flex;
align-items: center;
gap: 5px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.du-treemap-meta {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 10.5px;
font-family: var(--font-mono);
color: rgba(255, 255, 255, 0.85);
}
.du-items-list {
display: flex;
flex-direction: column;
gap: 4px;
}
.du-item-row {
display: flex;
align-items: center;
gap: 10px;
padding: 6px 10px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: 5px;
cursor: pointer;
transition: background 0.12s ease, border-color 0.12s ease;
}
.du-item-row:hover {
background: var(--bg-hover);
border-color: var(--accent);
}
.du-item-name-col {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 1px;
}
.du-item-name {
font-size: 11.5px;
font-weight: 600;
color: var(--text-main);
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.du-item-sub {
font-size: 10px;
color: var(--text-dim);
font-family: var(--font-mono);
}
.du-item-bar-wrapper {
width: 120px;
height: 6px;
background: rgba(255, 255, 255, 0.05);
border-radius: 3px;
overflow: hidden;
}
.du-item-bar-fill {
height: 100%;
border-radius: 3px;
}
.du-item-size-col {
width: 75px;
text-align: right;
font-size: 11px;
font-weight: 700;
color: var(--text-main);
font-family: var(--font-mono);
}
.du-item-pct-col {
width: 45px;
text-align: right;
font-size: 10.5px;
color: var(--accent);
font-family: var(--font-mono);
font-weight: 600;
}
.du-item-actions {
display: flex;
align-items: center;
gap: 4px;
}
.du-action-btn {
width: 24px;
height: 24px;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
background: transparent;
border: 1px solid transparent;
border-radius: 4px;
color: var(--text-muted);
cursor: pointer;
transition: all 0.12s ease;
}
.du-action-btn:hover {
background: var(--bg-panel);
border-color: var(--border);
color: var(--accent);
}
.du-mounts-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 12px;
margin-bottom: 16px;
}
.du-mount-card {
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 10px;
transition: all 0.15s ease;
position: relative;
overflow: hidden;
}
.du-mount-card:hover {
border-color: rgba(245, 158, 11, 0.45);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
transform: translateY(-1px);
}
.du-mount-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.du-mount-title-group {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
flex: 1;
}
.du-mount-icon {
width: 28px;
height: 28px;
border-radius: 6px;
background: rgba(245, 158, 11, 0.12);
color: var(--accent);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.du-mount-title {
font-size: 12.5px;
font-weight: 700;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.du-mount-path {
font-size: 10.5px;
color: var(--text-dim);
font-family: var(--font-mono);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.du-mount-badges {
display: flex;
gap: 4px;
align-items: center;
flex-shrink: 0;
}
.du-mount-badge {
font-size: 9px;
font-weight: 700;
padding: 2px 6px;
border-radius: 4px;
text-transform: uppercase;
font-family: var(--font-mono);
background: rgba(255, 255, 255, 0.08);
color: var(--text-dim);
border: 1px solid rgba(255, 255, 255, 0.05);
}
.du-mount-badge.fstype {
background: rgba(56, 189, 248, 0.15);
color: #38bdf8;
border-color: rgba(56, 189, 248, 0.25);
}
.du-mount-badge.rw {
background: rgba(16, 185, 129, 0.15);
color: #10b981;
border-color: rgba(16, 185, 129, 0.25);
}
.du-mount-badge.ro {
background: rgba(245, 158, 11, 0.15);
color: #f59e0b;
border-color: rgba(245, 158, 11, 0.25);
}
.du-mount-meter-wrapper {
display: flex;
flex-direction: column;
gap: 5px;
}
.du-mount-meter-bar {
height: 8px;
width: 100%;
background: rgba(255, 255, 255, 0.08);
border-radius: 4px;
overflow: hidden;
}
.du-mount-meter-fill {
height: 100%;
border-radius: 4px;
transition: width 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.du-mount-meter-fill.low {
background: linear-gradient(90deg, #10b981, #059669);
}
.du-mount-meter-fill.mid {
background: linear-gradient(90deg, #f59e0b, #d97706);
}
.du-mount-meter-fill.high {
background: linear-gradient(90deg, #ef4444, #dc2626);
}
.du-mount-metrics {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 10.5px;
font-family: var(--font-mono);
color: var(--text-dim);
}
.du-mount-actions {
display: flex;
gap: 6px;
align-items: center;
margin-top: 2px;
padding-top: 8px;
border-top: 1px solid rgba(255, 255, 255, 0.05);
}
@media (max-width: 768px) {
.row-icon-wrapper.selected {
background: var(--accent);
color: #121214 !important;
box-shadow: 0 0 8px rgba(245, 158, 11, 0.5);
transform: scale(1.05);
}
.row-icon-wrapper.selected .file-icon,
.row-icon-wrapper.selected svg {
color: #121214 !important;
stroke: #121214 !important;
stroke-width: 3.5 !important;
}
}
.mobile-task-peek-bar {
display: none;
width: 100%;
height: 16px;
background: transparent;
align-items: center;
justify-content: center;
cursor: pointer;
touch-action: none;
user-select: none;
position: relative;
z-index: 110;
margin-top: -16px;
flex-shrink: 0;
pointer-events: none;
}
@media (max-width: 768px) {
.mobile-task-peek-bar {
display: flex !important;
margin-top: -12px;
height: 12px;
}
.pane-footer {
height: 28px !important;
min-height: 28px !important;
max-height: 28px !important;
padding: 0 6px !important;
position: relative;
z-index: 100;
}
.pane-footer-info {
max-width: 48%;
min-width: 0;
}
.pane-footer-right {
gap: 4px;
margin-left: auto;
}
.pane-footer-viewmodes {
gap: 4px;
position: relative;
z-index: 105;
}
.pane-footer-view-btn {
width: 22px !important;
height: 22px !important;
min-width: 22px !important;
min-height: 22px !important;
max-width: 22px !important;
max-height: 22px !important;
border-radius: 4px !important;
touch-action: manipulation;
}
.pane-footer-view-btn i,
.pane-footer-view-btn svg {
width: 13px !important;
height: 13px !important;
}
.mobile-peek-pill {
padding: 2px 14px 1px 14px !important;
}
.mobile-peek-handle {
width: 28px !important;
height: 3px !important;
}
}
.mobile-peek-pill {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
background: rgba(26, 28, 34, 0.95);
border: 1px solid rgba(255, 255, 255, 0.18);
border-bottom: none;
border-radius: 8px 8px 0 0;
padding: 3px 18px 2px 18px;
box-shadow: 0 -3px 12px rgba(0, 0, 0, 0.5);
transition: all 0.18s ease;
backdrop-filter: blur(4px);
pointer-events: auto;
}
.mobile-peek-pill:hover,
.mobile-peek-pill:active {
background: rgba(38, 41, 50, 1);
border-color: var(--accent);
}
.mobile-peek-handle {
width: 36px;
height: 4px;
background: rgba(255, 255, 255, 0.45);
border-radius: 2px;
}
.mobile-peek-badge {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 10px;
font-weight: 700;
color: var(--accent);
font-family: var(--font-mono);
}
.mobile-bottom-bar {
display: none;
min-height: 48px;
height: calc(48px + env(safe-area-inset-bottom, 0px));
padding-bottom: env(safe-area-inset-bottom, 0px);
background: var(--bg-header);
border-top: 1px solid var(--border);
padding-left: 4px;
padding-right: 4px;
align-items: center;
justify-content: space-around;
flex-shrink: 0;
z-index: 100;
}
html[data-mobile-bar="off"] .mobile-bottom-bar,
body.mobile-bar-off .mobile-bottom-bar,
.mobile-bottom-bar.mode-off {
display: none !important;
}
html[data-mobile-bar="icons_only"] .mobile-bottom-bar,
body.mobile-bar-icons_only .mobile-bottom-bar,
.mobile-bottom-bar.mode-icons_only {
min-height: 38px !important;
height: calc(38px + env(safe-area-inset-bottom, 0px)) !important;
padding-top: 2px !important;
}
html[data-mobile-bar="icons_only"] .mob-cmd-btn,
body.mobile-bar-icons_only .mob-cmd-btn,
.mobile-bottom-bar.mode-icons_only .mob-cmd-btn {
height: 32px !important;
max-width: 52px !important;
gap: 0 !important;
}
html[data-mobile-bar="icons_only"] .mob-cmd-btn span,
body.mobile-bar-icons_only .mob-cmd-btn span,
.mobile-bottom-bar.mode-icons_only .mob-cmd-btn span {
display: none !important;
}
html[data-mobile-bar="icons_only"] .mob-cmd-btn i,
html[data-mobile-bar="icons_only"] .mob-cmd-btn svg,
body.mobile-bar-icons_only .mob-cmd-btn i,
body.mobile-bar-icons_only .mob-cmd-btn svg,
.mobile-bottom-bar.mode-icons_only .mob-cmd-btn i,
.mobile-bottom-bar.mode-icons_only .mob-cmd-btn svg {
width: 18px !important;
height: 18px !important;
}
.mob-cmd-btn {
flex: 1;
max-width: 75px;
height: 42px;
background: transparent;
border: none;
color: var(--text-main);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 2px;
font-size: 10px;
font-weight: 600;
border-radius: 6px;
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
}
.mob-cmd-btn i, .mob-cmd-btn svg {
width: 16px;
height: 16px;
}
.mob-cmd-btn:active {
background: var(--bg-hover);
color: var(--accent);
transform: scale(0.95);
}
.mob-cmd-btn.mob-cmd-accent {
color: var(--accent);
}
.mob-cmd-btn.has-selection {
background: var(--accent-subtle);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.3);
}
.mob-cmd-btn.active {
background: var(--accent) !important;
color: #121214 !important;
border-color: var(--accent) !important;
box-shadow: 0 0 14px rgba(245, 158, 11, 0.45);
font-weight: 700;
}
.mob-cmd-btn.active i,
.mob-cmd-btn.active svg {
stroke: #121214 !important;
}
@media (max-width: 900px) {
.header, .app-header {
height: auto !important;
min-height: calc(44px + env(safe-area-inset-top, 0px)) !important;
padding-top: max(4px, env(safe-area-inset-top, 0px)) !important;
padding-bottom: 4px !important;
padding-left: max(10px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(10px, env(safe-area-inset-right, 0px)) !important;
gap: 6px !important;
box-sizing: border-box !important;
}
.modal-overlay {
padding-top: env(safe-area-inset-top, 0px);
padding-bottom: env(safe-area-inset-bottom, 0px);
padding-left: env(safe-area-inset-left, 0px);
padding-right: env(safe-area-inset-right, 0px);
box-sizing: border-box;
}
.modal-box {
width: 95vw !important;
max-width: 95vw !important;
}
.image-viewer-box {
width: 98vw !important;
height: 94vh !important;
}
.bulk-renamer-box {
width: 95vw !important;
}
#spotlight-modal {
padding-top: max(8px, calc(env(safe-area-inset-top, 0px) + 8px)) !important;
padding-left: max(6px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(6px, env(safe-area-inset-right, 0px)) !important;
}
.spotlight-box {
width: 100% !important;
max-width: 100% !important;
max-height: 85vh !important;
border-radius: 8px !important;
}
.spotlight-input-wrapper {
padding: 10px 12px !important;
gap: 8px !important;
}
.spotlight-input {
font-size: 16px !important;
}
.spotlight-item {
padding: 10px 12px !important;
min-height: 48px !important;
}
.spotlight-footer {
display: none !important;
}
}
@media (max-width: 768px) {
.header-actions {
gap: 6px !important;
margin-left: auto;
}
.profile-btn {
padding: 2px !important;
background: transparent !important;
border: none !important;
border-radius: 50% !important;
}
.profile-avatar-thumb {
width: 32px !important;
height: 32px !important;
font-size: 16px !important;
border-radius: 50% !important;
border: 1.5px solid var(--accent) !important;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4) !important;
}
.app-header {
height: auto !important;
min-height: calc(44px + env(safe-area-inset-top, 0px)) !important;
padding-top: max(4px, env(safe-area-inset-top, 0px)) !important;
padding-bottom: 4px !important;
padding-left: max(10px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(10px, env(safe-area-inset-right, 0px)) !important;
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
box-sizing: border-box !important;
}
.app-header .logo-area {
font-size: 14px !important;
font-weight: 700 !important;
gap: 6px;
margin-right: auto;
}
.app-header .logo-area .app-logo-text {
display: inline-block !important;
font-size: 13.5px !important;
font-weight: 700 !important;
letter-spacing: 0.3px !important;
white-space: nowrap !important;
}
@media (max-width: 600px) {
.app-header .logo-area .app-logo-text {
display: none !important;
}
.panes-container,
.panes-container.layout-single,
.panes-container.layout-dual-vertical,
.panes-container.layout-dual-horizontal,
.panes-container.layout-triple,
.panes-container.layout-triple-stacked,
.panes-container.layout-quad {
display: flex !important;
flex-direction: column !important;
width: 100% !important;
height: 100% !important;
padding: 0 !important;
gap: 0 !important;
overflow: hidden !important;
}
.panes-container .pane:not(.active) {
display: none !important;
}
.panes-container .pane.active {
display: flex !important;
flex-direction: column !important;
width: 100% !important;
height: 100% !important;
flex: 1 1 auto !important;
border-radius: 0 !important;
border: none !important;
overflow: hidden !important;
}
.pane,
.pane-content,
.pane-split-wrapper,
.pane-main-view,
.file-table-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
overflow-x: hidden !important;
touch-action: pan-y !important;
}
.file-table {
table-layout: fixed !important;
width: 100% !important;
max-width: 100% !important;
overflow-x: hidden !important;
border-collapse: separate !important;
border-spacing: 0 !important;
touch-action: pan-y !important;
}
.file-table th,
.file-table td {
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
box-sizing: border-box !important;
}
.file-table th.col-icon,
.file-table td.file-cell-icon {
width: 26px !important;
min-width: 26px !important;
max-width: 26px !important;
padding: 0 2px !important;
text-align: center !important;
}
.file-table th.col-name,
.file-table td.file-cell-name {
width: auto !important;
min-width: 60px !important;
max-width: none !important;
padding: 4px 6px !important;
}
.file-table th.col-size,
.file-table td.file-cell-size {
width: 52px !important;
min-width: 52px !important;
max-width: 52px !important;
padding: 4px 3px !important;
text-align: right !important;
}
.file-table th.col-modified,
.file-table td.file-cell-modified {
width: 62px !important;
min-width: 62px !important;
max-width: 62px !important;
padding: 4px 3px !important;
}
.file-table th.col-ext,
.file-table td.file-cell-ext,
.file-table th.col-mode,
.file-table td.file-cell-mode,
.file-table th.col-owner,
.file-table td.file-cell-owner,
.file-table th.col-group,
.file-table td.file-cell-group,
.file-table th.col-created,
.file-table td.file-cell-created,
.file-table th.col-hash,
.file-table td.file-cell-hash,
.file-table th.col-tags,
.file-table td.file-cell-tags {
display: none !important;
width: 0 !important;
max-width: 0 !important;
padding: 0 !important;
border: none !important;
}
}
@media (min-width: 601px) and (max-width: 1024px) {
.app-header .logo-area .app-logo-text {
display: inline-block !important;
font-size: 13.5px !important;
font-weight: 700 !important;
letter-spacing: 0.3px !important;
}
.panes-container,
.panes-container.layout-dual-vertical,
.panes-container.layout-triple,
.panes-container.layout-triple-stacked,
.panes-container.layout-quad {
display: grid !important;
grid-template-columns: minmax(0, var(--pane-split-dual-v-0, 1fr)) minmax(0, var(--pane-split-dual-v-1, 1fr)) !important;
grid-template-rows: 1fr !important;
gap: 6px !important;
padding: 4px !important;
height: 100% !important;
overflow: hidden !important;
}
.panes-container.layout-single {
display: grid !important;
grid-template-columns: 1fr !important;
grid-template-rows: 1fr !important;
gap: 0 !important;
}
.panes-container.layout-dual-horizontal {
display: grid !important;
grid-template-columns: minmax(0, var(--pane-split-dual-v-0, 1fr)) minmax(0, var(--pane-split-dual-v-1, 1fr)) !important;
grid-template-rows: 1fr !important;
gap: 6px !important;
}
.panes-container .pane,
.panes-container.layout-triple-stacked .pane:nth-child(1),
.panes-container.layout-triple-stacked .pane:nth-child(2),
.panes-container.layout-triple-stacked .pane:nth-child(3),
.panes-container.layout-triple-stacked .pane:nth-child(4) {
grid-column: auto !important;
grid-row: auto !important;
display: flex !important;
flex-direction: column !important;
min-width: 0 !important;
overflow: hidden !important;
border-radius: 6px !important;
}
.pane,
.pane-content,
.pane-split-wrapper,
.pane-main-view,
.file-table-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
overflow-x: hidden !important;
box-sizing: border-box !important;
}
.file-table {
table-layout: fixed !important;
width: 100% !important;
max-width: 100% !important;
overflow-x: hidden !important;
border-collapse: separate !important;
border-spacing: 0 !important;
}
.file-table th, .file-table td {
padding: 5px 6px !important;
font-size: 12px !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
vertical-align: middle !important;
box-sizing: border-box !important;
}
.file-table th.col-icon,
.file-table td.file-cell-icon {
width: 26px !important;
min-width: 26px !important;
max-width: 26px !important;
padding: 0 3px !important;
text-align: center;
}
.file-table th.col-name,
.file-table td.file-cell-name {
width: auto !important;
min-width: 80px !important;
max-width: none !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
font-size: 12.5px !important;
}
.file-table th.col-size,
.file-table td.file-cell-size {
width: 58px !important;
min-width: 48px !important;
max-width: 68px !important;
text-align: right !important;
}
.file-table th.col-modified,
.file-table td.file-cell-modified {
width: 72px !important;
min-width: 60px !important;
max-width: 80px !important;
}
.file-table th.col-created,
.file-table td.file-cell-created {
width: 72px !important;
min-width: 60px !important;
max-width: 80px !important;
}
.file-table th.col-mode,
.file-table td.file-cell-mode {
width: 42px !important;
min-width: 36px !important;
max-width: 48px !important;
}
.file-table th.col-owner,
.file-table td.file-cell-owner {
width: 48px !important;
min-width: 40px !important;
max-width: 56px !important;
}
.file-table th.col-ext,
.file-table td.file-cell-ext {
width: 38px !important;
min-width: 30px !important;
max-width: 44px !important;
}
.file-table th.col-group,
.file-table td.file-cell-group {
width: 48px !important;
min-width: 40px !important;
max-width: 56px !important;
}
.file-table th.col-hash,
.file-table td.file-cell-hash {
width: 56px !important;
min-width: 45px !important;
max-width: 65px !important;
}
.file-table th.col-tags,
.file-table td.file-cell-tags {
width: 50px !important;
min-width: 40px !important;
max-width: 60px !important;
}
.file-cell-mono {
font-size: 10.5px !important;
}
.pane-path-bar {
font-size: 11.5px !important;
}
.pane-footer {
font-size: 10.5px !important;
padding: 4px 8px !important;
}
.breadcrumb-item {
font-size: 11px !important;
}
.btn-icon {
width: 28px !important;
height: 28px !important;
}
}
@media (horizontal-viewport-segments: 2) {
.panes-container,
.panes-container.layout-dual-vertical,
.panes-container.layout-triple,
.panes-container.layout-triple-stacked,
.panes-container.layout-quad {
display: grid !important;
grid-template-columns: env(viewport-segment-width 0 0, 1fr) env(viewport-segment-width 1 0, 1fr) !important;
grid-template-rows: 1fr !important;
gap: max(8px, calc(env(viewport-segment-left 1 0, 50vw) - env(viewport-segment-width 0 0, 50vw))) !important;
padding: 4px env(viewport-segment-left 0 0, 4px) !important;
}
}
@media (screen-spanning: single-fold-vertical) {
.panes-container,
.panes-container.layout-dual-vertical,
.panes-container.layout-triple,
.panes-container.layout-triple-stacked,
.panes-container.layout-quad {
display: grid !important;
grid-template-columns: env(fold-left, 1fr) calc(100vw - env(fold-left, 50vw) - env(fold-width, 0px)) !important;
grid-template-rows: 1fr !important;
gap: max(8px, env(fold-width, 8px)) !important;
}
}
.pane-header {
flex-wrap: nowrap !important;
height: 34px !important;
min-height: 34px !important;
max-height: 34px !important;
padding: 3px 6px !important;
gap: 4px !important;
overflow: hidden !important;
box-sizing: border-box !important;
}
.pane-nav-btns.desktop-only-tool,
.pane-nav-btns,
.desktop-header-tool {
display: none !important;
}
.pane-path-bar {
flex: 1 1 auto !important;
min-width: 0 !important;
width: 100% !important;
height: 26px !important;
font-size: 11px !important;
overflow: hidden !important;
display: flex !important;
align-items: center !important;
}
.pane-breadcrumbs {
flex: 1 1 auto !important;
min-width: 0 !important;
overflow-x: auto !important;
white-space: nowrap !important;
scrollbar-width: none !important;
-webkit-overflow-scrolling: touch !important;
}
.pane-breadcrumbs::-webkit-scrollbar {
display: none !important;
}
.pane-favorites-wrapper {
display: inline-flex !important;
flex-shrink: 0 !important;
}
.pane-tools-wrapper {
display: inline-flex !important;
flex-shrink: 0 !important;
}
.pane-quick-filter {
width: 90px !important;
height: 24px !important;
font-size: 11px !important;
}
.file-table {
table-layout: fixed !important;
width: 100% !important;
}
.file-table th, .file-table td {
padding: 3px 5px !important;
font-size: 11.5px;
height: 32px;
vertical-align: middle !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
}
.file-table th.col-icon,
.file-table td.file-cell-icon {
width: 26px !important;
min-width: 26px !important;
max-width: 26px !important;
padding: 0 3px !important;
text-align: center;
}
.file-table th.col-name,
.file-table td.file-cell-name {
width: var(--col-name-w, 58%) !important;
min-width: 90px !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
font-size: 12px !important;
}
.file-table th.col-size,
.file-table td.file-cell-size {
width: var(--col-size-w, 12%) !important;
min-width: 34px !important;
text-align: right !important;
}
.file-table th.col-modified,
.file-table td.file-cell-modified {
width: var(--col-modified-w, 18%) !important;
min-width: 58px !important;
}
.file-table th.col-created,
.file-table td.file-cell-created {
width: var(--col-created-w, 18%) !important;
min-width: 58px !important;
}
.file-table th.col-mode,
.file-table td.file-cell-mode {
width: var(--col-mode-w, 10%) !important;
min-width: 30px !important;
}
.file-table th.col-owner,
.file-table td.file-cell-owner {
width: var(--col-owner-w, 10%) !important;
min-width: 30px !important;
}
.file-table th.col-ext,
.file-table td.file-cell-ext {
width: var(--col-ext-w, 8%) !important;
min-width: 26px !important;
}
.file-table th.col-group,
.file-table td.file-cell-group {
width: var(--col-group-w, 10%) !important;
min-width: 30px !important;
}
.file-table th.col-hash,
.file-table td.file-cell-hash {
width: var(--col-hash-w, 14%) !important;
min-width: 40px !important;
}
.file-table th.col-tags,
.file-table td.file-cell-tags {
width: var(--col-tags-w, 12%) !important;
min-width: 36px !important;
}
.file-row {
height: 32px !important;
min-height: 32px !important;
cursor: pointer;
}
.file-cell-mono {
font-size: 10.5px !important;
}
.file-table-multiline thead {
display: none !important;
}
.file-table-multiline .file-row {
height: auto !important;
min-height: 42px !important;
padding: 4px 0;
}
.file-table-multiline .file-subtext-mobile {
display: flex !important;
align-items: center;
gap: 4px;
font-size: 10px;
color: var(--text-dim);
font-family: var(--font-mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-top: 1px;
line-height: 1.2;
}
.file-table-multiline th:nth-child(n+3),
.file-table-multiline td:nth-child(n+3) {
display: none !important;
}
.file-subtext-mobile .subtext-perms {
color: var(--accent);
font-weight: 500;
}
.file-subtext-mobile .subtext-owner {
color: var(--text-muted);
}
.file-subtext-mobile .subtext-size {
color: var(--text-main);
font-weight: 600;
}
.file-subtext-mobile .subtext-sep {
opacity: 0.35;
}
.pane-path-bar {
font-size: 11px !important;
}
.pane-footer {
font-size: 10px !important;
padding: 3px 6px !important;
}
.file-tag-badge {
font-size: 9px !important;
padding: 1px 4px !important;
}
.mobile-bottom-bar button {
font-size: 10.5px !important;
}
.file-row:active {
background-color: var(--bg-hover) !important;
}
.bottom-fkey-bar {
display: none !important;
}
.mobile-bottom-bar {
display: flex !important;
}
html[data-mobile-bar="off"] .mobile-bottom-bar,
body.mobile-bar-off .mobile-bottom-bar,
.mobile-bottom-bar.mode-off {
display: none !important;
}
.terminal-drawer {
height: 70vh !important;
}
.modal-box {
width: 96vw !important;
max-width: 96vw !important;
margin: 6px auto !important;
max-height: 90vh !important;
padding: 10px !important;
border-radius: 8px !important;
}
.modal-header {
padding: 8px 10px !important;
}
.modal-body {
padding: 8px 10px !important;
}
.modal-footer {
padding: 8px 10px !important;
}
}
@media (max-width: 480px) {
.file-table th.col-name,
.file-table td.file-cell-name {
width: 60% !important;
min-width: 80px !important;
}
.file-table th.col-size,
.file-table td.file-cell-size {
width: 14% !important;
min-width: 32px !important;
}
.file-table th.col-modified,
.file-table td.file-cell-modified {
width: 22% !important;
min-width: 54px !important;
}
.header .logo-area .app-logo-text,
.app-header .logo-area .app-logo-text {
font-size: 13px;
}
.fkey-btn .fkey-num {
font-size: 9px;
}
.tasks-pill {
bottom: 46px;
right: 8px;
padding: 4px 8px;
font-size: 10px;
}
}
.tools-dropdown-wrapper, .profile-dropdown-wrapper, .pane-favorites-wrapper, .pane-color-wrapper, .pane-upload-wrapper, .pane-transfer-wrapper {
position: relative;
display: inline-flex;
}
.tools-dropdown-menu, .profile-dropdown-menu, .pane-favorites-dropdown, .pane-color-dropdown, .pane-upload-dropdown, .pane-transfer-dropdown {
position: absolute;
top: calc(100% + 4px);
background: var(--bg-header);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7);
z-index: 2500;
display: none;
min-width: 210px;
overflow: hidden;
}
.tools-dropdown-menu {
right: 0;
left: auto;
min-width: 290px;
max-width: calc(100vw - 20px);
max-height: min(780px, calc(90vh - 60px));
overflow-y: auto;
}
.tools-dropdown-menu .dropdown-item {
gap: 12px;
padding: 8px 12px;
font-size: 12px;
font-weight: 500;
}
.tools-dropdown-menu .dropdown-item i,
.tools-dropdown-menu .dropdown-item svg {
color: var(--accent);
}
.tools-dropdown-menu .dropdown-item i,
.tools-dropdown-menu .dropdown-item svg,
.tools-dropdown-menu .dropdown-item img {
width: 18px !important;
height: 18px !important;
min-width: 18px !important;
min-height: 18px !important;
display: inline-block !important;
flex-shrink: 0 !important;
object-fit: contain;
}
.tool-reorder-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
user-select: none;
}
.tool-reorder-row:hover {
background: var(--bg-hover);
border-color: rgba(245, 158, 11, 0.3);
}
.tool-reorder-row.is-hidden {
opacity: 0.55;
background: rgba(0, 0, 0, 0.2);
}
.tool-reorder-row.dragging {
opacity: 0.35;
border: 1px dashed var(--accent);
background: rgba(245, 158, 11, 0.08);
}
.tool-reorder-row.drag-over {
border-top: 2px solid var(--accent);
background: rgba(245, 158, 11, 0.12);
transform: translateY(2px);
}
.tool-drag-handle {
cursor: grab;
color: var(--text-dim);
font-size: 15px;
user-select: none;
padding: 2px 4px;
transition: color 0.1s ease;
}
.tool-drag-handle:active {
cursor: grabbing;
}
.tool-reorder-row:hover .tool-drag-handle {
color: var(--accent);
}
.profile-dropdown-menu {
right: 0;
min-width: 260px;
max-height: min(760px, calc(88vh - 60px));
overflow-y: auto;
}
.pane-favorites-dropdown, .pane-color-dropdown {
right: 0;
left: auto;
min-width: 300px;
max-width: 440px;
max-height: min(780px, calc(88vh - 60px));
overflow-y: auto;
}
.pane-dropdown-body {
max-height: min(720px, calc(88vh - 100px));
overflow-y: auto;
}
.tools-dropdown-menu.active, .profile-dropdown-menu.active, .pane-favorites-dropdown.active, .pane-color-dropdown.active, .pane-upload-dropdown.active, .pane-transfer-dropdown.active {
display: block;
}
@media (max-width: 600px) {
.tools-dropdown-menu,
.profile-dropdown-menu {
position: fixed !important;
top: 48px !important;
right: 8px !important;
left: auto !important;
width: calc(100vw - 16px) !important;
max-width: 320px !important;
max-height: calc(100dvh - 60px) !important;
overflow-y: auto !important;
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.8) !important;
z-index: 2500 !important;
border-radius: 10px !important;
}
.pane-favorites-dropdown,
.pane-color-dropdown,
.pane-tools-dropdown,
.pane-settings-dropdown,
.pane-upload-dropdown,
.pane-transfer-dropdown {
position: fixed !important;
top: 88px !important;
right: 8px !important;
left: auto !important;
width: calc(100vw - 16px) !important;
max-width: 320px !important;
max-height: calc(100dvh - 100px) !important;
overflow-y: auto !important;
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.8) !important;
z-index: 2500 !important;
border-radius: 10px !important;
}
.pane-dropdown-body {
max-height: calc(100dvh - 140px) !important;
}
}
@media (min-width: 601px) and (max-width: 1024px) {
.tools-dropdown-menu,
.profile-dropdown-menu,
.pane-favorites-dropdown,
.pane-color-dropdown,
.pane-tools-dropdown,
.pane-settings-dropdown,
.pane-upload-dropdown,
.pane-transfer-dropdown {
max-width: min(340px, calc(100vw - 20px)) !important;
max-height: calc(100dvh - 70px) !important;
overflow-y: auto !important;
}
.pane-dropdown-body {
max-height: calc(100dvh - 110px) !important;
}
}
.color-swatch-btn {
transition: all 0.15s ease;
}
.color-swatch-btn:hover {
background: var(--bg-hover) !important;
border-color: var(--accent) !important;
}
.color-swatch-btn.active {
border-color: var(--accent) !important;
background: rgba(245, 158, 11, 0.12) !important;
}
.dropdown-item {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
font-size: 12px;
cursor: pointer;
color: var(--text-main);
transition: background 0.1s;
}
.dropdown-item:hover {
background: var(--bg-hover);
color: var(--accent);
}
.dropdown-item i,
.dropdown-item svg {
width: 14px;
height: 14px;
min-width: 14px;
min-height: 14px;
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
}
.dropdown-sep {
height: 1px;
background: var(--border);
margin: 4px 0;
}
.profile-btn {
display: flex;
align-items: center;
gap: 6px;
padding: 4px 10px;
max-width: 170px;
min-width: 0;
flex-shrink: 0;
box-sizing: border-box;
}
#header-username-label {
display: inline-block;
max-width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
.profile-avatar-thumb {
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--accent-subtle);
border: 1px solid var(--accent);
display: flex;
align-items: center;
justify-content: center;
font-size: 11px;
overflow: hidden;
flex-shrink: 0;
}
.profile-avatar-thumb img,
.profile-avatar-large img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.profile-avatar-large {
width: 48px;
height: 48px;
border-radius: 50%;
background: var(--accent-subtle);
border: 2px solid var(--accent);
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
overflow: hidden;
flex-shrink: 0;
}
.profile-avatar-clickable {
cursor: pointer;
position: relative;
transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}
.profile-avatar-clickable:hover {
transform: scale(1.06);
border-color: var(--accent-hover);
box-shadow: 0 0 12px rgba(245, 158, 11, 0.45);
}
.profile-dropdown-header {
padding: 12px;
background: var(--bg-dark);
display: flex;
align-items: center;
gap: 12px;
border-bottom: 1px solid var(--border);
}
.profile-header-shield-btn {
background: transparent;
border: none;
padding: 4px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
color: var(--text-dim);
opacity: 0.5;
transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
margin-left: auto;
flex-shrink: 0;
}
.profile-header-shield-btn i {
width: 17px;
height: 17px;
transition: all 0.2s ease;
}
.profile-header-shield-btn.active {
color: #22c55e;
opacity: 1;
filter: drop-shadow(0 0 6px rgba(34, 197, 94, 0.75));
}
.profile-header-shield-btn:hover {
transform: scale(1.15);
opacity: 1;
color: #22c55e;
filter: drop-shadow(0 0 10px rgba(34, 197, 94, 0.95));
}
.user-role-badge {
font-size: 9px;
font-weight: 800;
padding: 1px 5px;
border-radius: 3px;
background: var(--accent);
color: #121214;
letter-spacing: 0.5px;
}
.profile-dropdown-footer {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
padding: 8px 10px;
background: rgba(0, 0, 0, 0.25);
border-top: 1px solid var(--border);
}
.profile-action-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 7px 10px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text-main);
font-size: 11px;
font-weight: 600;
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
}
.profile-action-btn i {
width: 13px;
height: 13px;
flex-shrink: 0;
}
.profile-action-btn:hover {
background: var(--bg-hover);
border-color: var(--accent);
color: var(--accent);
}
.profile-action-btn.btn-danger-action:hover {
background: rgba(239, 68, 68, 0.15);
border-color: var(--danger);
color: #f87171;
}
.profile-action-btn.btn-danger-action:hover i {
color: #f87171;
}
.editor-find-bar {
background: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 6px 12px;
font-size: 12px;
}
.editor-status-bar {
background: var(--bg-header);
border-top: 1px solid var(--border);
padding: 4px 12px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
color: var(--text-dim);
font-family: var(--font-mono);
}
.diff-modal-box {
width: 950px;
max-width: 96vw;
height: 88vh;
max-height: 90vh;
display: flex;
flex-direction: column;
padding: 0 !important;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.85);
overflow: hidden;
}
.diff-modal-header {
padding: 10px 16px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
}
.diff-header-title-group {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.diff-header-icon {
width: 16px;
height: 16px;
color: var(--accent);
flex-shrink: 0;
}
.diff-header-title {
font-weight: 700;
font-size: 13px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.diff-header-actions {
display: flex;
align-items: center;
gap: 8px;
flex-shrink: 0;
}
.diff-modal-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
padding: 12px;
gap: 10px;
background: var(--bg-main);
min-height: 0;
}
.diff-paths-card {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
background: var(--bg-header);
padding: 8px 12px;
border-radius: var(--radius);
border: 1px solid var(--border);
flex-shrink: 0;
flex-wrap: wrap;
}
.diff-path-chips {
display: flex;
align-items: center;
gap: 8px;
font-size: 11.5px;
flex: 1;
min-width: 0;
overflow: hidden;
}
.diff-path-chip {
display: inline-flex;
align-items: center;
gap: 5px;
background: var(--bg-dark);
border: 1px solid var(--border);
padding: 3px 8px;
border-radius: 4px;
max-width: 45%;
min-width: 0;
}
.diff-path-chip code {
color: var(--accent);
font-family: var(--font-mono);
font-size: 11px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.diff-action-buttons {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.diff-action-buttons button,
.diff-action-buttons .btn {
height: 26px !important;
min-height: 26px !important;
border-radius: var(--radius) !important;
font-size: 11px !important;
padding: 0 10px !important;
display: inline-flex !important;
align-items: center !important;
gap: 4px;
}
.diff-filter-bar {
display: flex;
gap: 6px;
overflow-x: auto;
padding-bottom: 2px;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
flex-shrink: 0;
}
.diff-filter-bar::-webkit-scrollbar {
display: none;
}
.diff-filter-btn {
background: var(--bg-dark);
border: 1px solid var(--border);
color: var(--text-main);
padding: 0 10px;
height: 26px;
min-height: 26px;
border-radius: var(--radius);
font-size: 11px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 5px;
white-space: nowrap;
flex-shrink: 0;
transition: all 0.15s ease;
box-sizing: border-box;
}
.diff-filter-btn:hover {
background: var(--bg-hover);
border-color: var(--accent);
}
.diff-filter-btn.active {
background: var(--accent-subtle);
border-color: var(--accent);
color: var(--accent);
font-weight: 700;
}
.diff-table-wrapper {
flex: 1;
overflow: auto;
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--bg-dark);
min-height: 0;
}
.diff-table {
width: 100%;
border-collapse: collapse;
font-size: 11px;
}
.diff-table th {
position: sticky;
top: 0;
background: var(--bg-panel);
color: var(--text-muted);
font-weight: 700;
padding: 8px 10px;
border-bottom: 1px solid var(--border);
z-index: 10;
text-transform: uppercase;
font-size: 10px;
white-space: nowrap;
}
.diff-table td {
padding: 6px 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
white-space: nowrap;
}
.diff-table tr:hover td {
background: var(--bg-hover);
}
.diff-file-header-card {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
background: var(--bg-header);
padding: 8px 12px;
border-radius: var(--radius);
border: 1px solid var(--border);
flex-shrink: 0;
flex-wrap: wrap;
}
.diff-file-stats {
display: flex;
align-items: center;
gap: 8px;
font-size: 11.5px;
min-width: 0;
overflow: hidden;
flex: 1;
}
.diff-container {
flex: 1;
font-family: var(--font-mono);
font-size: 11.5px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
overflow: auto;
min-height: 0;
line-height: 1.5;
}
.diff-line {
display: flex;
min-width: 100%;
width: max-content;
padding: 1px 8px;
white-space: pre;
}
.diff-line.insert {
background-color: rgba(16, 185, 129, 0.18);
color: #34d399;
}
.diff-line.delete {
background-color: rgba(239, 68, 68, 0.18);
color: #f87171;
}
.diff-gutter {
width: 70px;
min-width: 70px;
color: var(--text-dim);
text-align: right;
padding-right: 12px;
margin-right: 8px;
border-right: 1px solid rgba(255, 255, 255, 0.06);
user-select: none;
font-size: 10.5px;
}
@media (max-width: 768px) {
.diff-modal-box {
width: 98vw !important;
height: 94vh !important;
max-height: 94vh !important;
border-radius: 8px !important;
}
.diff-modal-header {
padding: 8px 12px;
}
.diff-header-title {
font-size: 12px;
}
.diff-paths-card {
flex-direction: column;
align-items: stretch;
gap: 8px;
}
.diff-path-chips {
flex-direction: column;
align-items: stretch;
gap: 4px;
}
.diff-path-chip {
max-width: 100%;
}
.diff-action-buttons {
justify-content: flex-end;
}
.diff-file-header-card {
flex-direction: column;
align-items: stretch;
gap: 8px;
}
.diff-gutter {
width: 50px;
min-width: 50px;
padding-right: 6px;
margin-right: 4px;
}
}
.converter-preview-box {
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 12px;
margin-bottom: 12px;
display: flex;
align-items: center;
gap: 12px;
}
.admin-user-card {
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 16px;
display: flex;
flex-direction: column;
gap: 12px;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.admin-user-card:hover {
border-color: rgba(245, 158, 11, 0.35);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}
.admin-user-card-header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 10px;
padding-bottom: 12px;
border-bottom: 1px solid var(--border);
}
.admin-user-card-title-group {
display: flex;
align-items: center;
gap: 12px;
min-width: 0;
}
.admin-user-name-row {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.admin-user-name {
font-size: 14px;
font-weight: 700;
color: var(--text-main);
}
.admin-user-sub {
font-size: 11px;
color: var(--text-dim);
margin-top: 2px;
}
.admin-user-header-actions {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.admin-user-status-chip {
font-size: 11px;
font-weight: 700;
padding: 3px 8px;
border-radius: 4px;
border: 1px solid transparent;
display: inline-flex;
align-items: center;
gap: 4px;
user-select: none;
}
.admin-user-status-chip.active {
color: #34d399;
background: rgba(16, 185, 129, 0.15);
border-color: rgba(16, 185, 129, 0.35);
}
.admin-user-status-chip.disabled {
color: #f87171;
background: rgba(239, 68, 68, 0.15);
border-color: rgba(239, 68, 68, 0.35);
}
.admin-user-card-body {
display: flex;
flex-direction: column;
gap: 12px;
}
.admin-roots-selector-box {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 8px 10px;
max-height: 120px;
overflow-y: auto;
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.admin-chip-checkbox {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 8px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: 4px;
font-size: 11px;
color: var(--text-muted);
cursor: pointer;
user-select: none;
transition: all 0.15s ease;
}
.admin-chip-checkbox:hover {
background: var(--bg-hover);
color: var(--text-main);
}
.admin-chip-checkbox.checked {
background: rgba(245, 158, 11, 0.12);
border-color: rgba(245, 158, 11, 0.4);
color: var(--accent);
font-weight: 600;
}
.admin-chip-checkbox input[type="checkbox"],
.admin-service-chip input[type="checkbox"] {
cursor: pointer;
accent-color: var(--accent);
margin: 0;
}
.admin-services-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(115px, 1fr));
gap: 6px;
}
.admin-service-chip {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 8px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
font-size: 11px;
color: var(--text-muted);
cursor: pointer;
user-select: none;
transition: all 0.15s ease;
}
.admin-service-chip:hover {
background: var(--bg-hover);
color: var(--text-main);
}
.admin-service-chip.checked {
background: rgba(245, 158, 11, 0.12);
border-color: rgba(245, 158, 11, 0.4);
color: var(--text-main);
font-weight: 600;
}
.admin-service-chip.checked i,
.admin-service-chip.checked svg {
color: var(--accent);
}
.admin-root-all-label {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 11px;
font-weight: 600;
color: var(--accent);
cursor: pointer;
}
.admin-table {
width: 100%;
border-collapse: separate;
border-spacing: 0 8px;
font-size: 12px;
text-align: left;
}
.admin-table th {
padding: 8px 12px;
color: var(--text-muted);
font-weight: 600;
font-size: 11px;
border-bottom: 1px solid var(--border);
}
.admin-user-row {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
transition: border-color 0.15s ease, background-color 0.15s ease;
}
.admin-user-row:hover {
background: var(--bg-hover);
}
.admin-user-cell {
padding: 10px 12px;
border-top: 1px solid var(--border);
border-bottom: 1px solid var(--border);
vertical-align: middle;
}
.admin-user-cell:first-child {
border-left: 1px solid var(--border);
border-top-left-radius: var(--radius);
border-bottom-left-radius: var(--radius);
}
.admin-user-cell:last-child {
border-right: 1px solid var(--border);
border-top-right-radius: var(--radius);
border-bottom-right-radius: var(--radius);
}
.file-row.drag-over-row,
.grid-gallery-card.drag-over-card,
.compact-list-item.drag-over-item {
background-color: rgba(245, 158, 11, 0.25) !important;
outline: 2px dashed var(--accent);
}
.pane-drag-upload-overlay {
position: absolute;
inset: 0;
background: rgba(15, 23, 42, 0.9);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
z-index: 500;
pointer-events: none;
border: 2px dashed var(--accent);
border-radius: var(--radius);
backdrop-filter: blur(4px);
}
.media-player-box {
width: 580px;
max-width: 95vw;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.8);
overflow: hidden;
display: flex;
flex-direction: column;
}
.media-player-display {
background: #000;
min-height: 180px;
max-height: 480px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
}
.media-player-display video {
width: 100%;
max-height: 480px;
background: #000;
}
.media-audio-visualizer {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 24px;
gap: 10px;
}
.media-controls-bar {
padding: 14px 16px;
background: var(--bg-header);
border-top: 1px solid var(--border);
display: flex;
flex-direction: column;
gap: 10px;
}
.media-scrubber-track {
width: 100%;
height: 6px;
background: var(--bg-dark);
border-radius: 3px;
position: relative;
cursor: pointer;
border: 1px solid var(--border);
}
.media-scrubber-progress {
height: 100%;
background: var(--accent);
border-radius: 3px;
width: 0%;
transition: width 0.1s linear;
}
.comic-reader-viewport {
flex: 1;
overflow: auto;
display: flex;
align-items: center;
justify-content: center;
background: #0b0f19;
position: relative;
padding: 16px;
min-height: 400px;
}
.comic-reader-img {
max-width: 100%;
max-height: calc(85vh - 120px);
object-fit: contain;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.8);
border-radius: 4px;
transition: transform 0.15s ease;
}
.layout-btn-group {
display: flex;
gap: 4px;
align-items: center;
}
.header-sep {
width: 1px;
height: 18px;
background: var(--border);
margin: 0 4px;
}
.header-task-btn {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
gap: 5px !important;
position: relative;
font-weight: 600;
font-size: 11px;
padding: 0 8px !important;
width: auto !important;
min-width: 48px !important;
height: 32px !important;
min-height: 32px !important;
border-radius: var(--radius);
transition: background-color 0.15s ease, border-color 0.15s ease;
box-sizing: border-box;
}
.header-task-btn #header-task-icon,
.header-task-btn img,
.header-task-btn svg,
.header-task-btn i {
width: 15px !important;
height: 15px !important;
min-width: 15px !important;
display: inline-block !important;
flex-shrink: 0 !important;
object-fit: contain;
color: var(--text-main);
}
.header-task-btn.has-running {
background: rgba(245, 158, 11, 0.15);
border-color: rgba(245, 158, 11, 0.4);
color: var(--accent);
}
.header-task-btn.has-running #header-task-icon,
.header-task-btn.has-running img {
filter: drop-shadow(0 0 3px rgba(245, 158, 11, 0.4));
}
.header-task-btn.has-failed {
background: rgba(239, 68, 68, 0.18);
border-color: rgba(239, 68, 68, 0.45);
color: #ef4444;
}
.header-task-badge {
background: var(--bg-dark);
color: var(--text-muted);
border: 1px solid var(--border);
padding: 0 5px;
border-radius: 8px;
font-size: 9.5px;
font-weight: 700;
font-family: var(--font-mono);
font-variant-numeric: tabular-nums;
min-width: 16px;
text-align: center;
line-height: 15px;
display: inline-block;
}
.header-task-btn.has-running .header-task-badge {
background: var(--accent);
color: #000;
border-color: var(--accent);
}
.header-task-btn.has-failed .header-task-badge {
background: #ef4444;
color: #fff;
border-color: #ef4444;
}
.header-task-speed {
display: none !important;
}
.task-drawer-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.65);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
z-index: 1490;
}
.task-drawer-backdrop.active {
display: block;
}
.floating-task-window {
position: fixed;
bottom: 24px;
right: 20px;
width: 520px;
min-width: 360px;
max-width: min(880px, calc(100vw - 32px));
min-height: 220px;
max-height: min(780px, calc(100vh - 48px));
background: #16181d;
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 8px;
box-shadow: 0 20px 48px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(0, 0, 0, 0.4);
z-index: 1500;
display: none;
flex-direction: column;
overflow: hidden;
font-family: var(--font-sans);
color: var(--text-main);
animation: taskSlideUp 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
.task-win-resize-corner {
position: absolute;
top: 0;
left: 0;
width: 14px;
height: 14px;
cursor: nwse-resize;
z-index: 30;
display: flex;
align-items: center;
justify-content: center;
user-select: none;
touch-action: none;
opacity: 0.6;
transition: opacity 0.15s ease, background 0.15s ease;
}
.task-win-resize-corner-br {
position: absolute;
bottom: 0;
right: 0;
width: 14px;
height: 14px;
cursor: nwse-resize;
z-index: 30;
display: flex;
align-items: flex-end;
justify-content: flex-end;
padding: 2px;
user-select: none;
touch-action: none;
opacity: 0.6;
transition: opacity 0.15s ease, background 0.15s ease;
}
.task-win-resize-corner:hover,
.task-win-resize-corner.dragging,
.task-win-resize-corner-br:hover,
.task-win-resize-corner-br.dragging {
opacity: 1;
background: var(--accent);
border-radius: 2px;
}
.drawer-pull-bar {
display: none;
}
.floating-task-window.active {
display: flex;
}
.floating-task-window.minimized {
display: none;
}
.floating-task-window.maximized {
width: 720px !important;
max-height: 85vh !important;
}
@keyframes taskSlideUp {
from {
opacity: 0;
transform: translateY(20px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.task-win-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 12px;
background: #20232a;
border-bottom: 1px solid var(--border);
user-select: none;
gap: 8px;
}
.task-win-title {
display: flex;
align-items: center;
gap: 8px;
font-weight: 700;
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-status-indicator {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--text-muted);
flex-shrink: 0;
}
.task-status-indicator.active {
background: var(--accent);
box-shadow: 0 0 8px var(--accent);
animation: pulseDot 1.5s infinite;
}
.task-speed-badge {
background: rgba(245, 158, 11, 0.18);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.35);
padding: 1px 6px;
border-radius: 4px;
font-size: 10px;
font-weight: 700;
font-family: var(--font-mono);
flex-shrink: 0;
}
.task-win-controls {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.btn-task-control {
background: transparent;
border: none;
color: var(--text-muted);
width: 28px;
height: 28px;
border-radius: var(--radius);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
padding: 0;
transition: all 0.15s ease;
}
.btn-task-control i,
.btn-task-control svg {
width: 14px;
height: 14px;
}
.btn-task-control:hover {
background: rgba(255, 255, 255, 0.1);
color: var(--text-main);
}
.btn-task-control.btn-task-close {
background: transparent;
color: var(--text-muted);
border: 1px solid transparent;
width: 28px;
height: 28px;
opacity: 0.7;
border-radius: var(--radius);
}
.btn-task-control.btn-task-close:hover {
background: rgba(244, 63, 94, 0.12);
color: #fb7185;
border-color: rgba(244, 63, 94, 0.2);
opacity: 1;
}
@media (max-width: 768px) {
.task-drawer-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
z-index: 2490;
transition: opacity 0.22s ease;
}
.task-drawer-backdrop.active {
display: block;
}
.floating-task-window {
display: flex !important;
flex-direction: column !important;
position: fixed !important;
bottom: 0 !important;
left: 0 !important;
right: 0 !important;
top: auto !important;
width: 100vw !important;
max-width: 100vw !important;
min-width: 100vw !important;
height: clamp(520px, 80vh, calc(var(--viewport-height, 100vh) - 24px)) !important;
max-height: calc(var(--viewport-height, 100vh) - 24px) !important;
border-radius: 20px 20px 0 0 !important;
border-left: none !important;
border-right: none !important;
border-bottom: none !important;
border-top: 1px solid rgba(255, 255, 255, 0.18) !important;
box-shadow: 0 -12px 48px rgba(0, 0, 0, 0.95) !important;
z-index: 2500 !important;
overflow: hidden !important;
touch-action: none;
transform: translateY(100%);
visibility: hidden;
pointer-events: none;
transition: transform 0.26s cubic-bezier(0.16, 1, 0.3, 1), visibility 0.26s;
}
.floating-task-window.active {
transform: translateY(0);
visibility: visible !important;
pointer-events: auto !important;
}
.floating-task-window.drawer-dragging {
visibility: visible !important;
pointer-events: auto !important;
transition: none !important;
}
.drawer-pull-bar {
width: 100%;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
background: #20232a;
cursor: grab;
touch-action: none;
user-select: none;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
flex-shrink: 0;
}
.drawer-pull-bar:active {
cursor: grabbing;
}
.drawer-pull-handle {
width: 48px;
height: 5px;
background: rgba(255, 255, 255, 0.45);
border-radius: 3px;
}
.task-win-resize-corner,
.task-win-resize-corner-br {
display: none !important;
}
.task-win-header {
padding: 10px 14px !important;
cursor: grab;
touch-action: none;
flex-shrink: 0;
}
.task-batch-summary,
.task-active-file-card {
flex-shrink: 0;
}
.task-queue-container {
flex: 1 1 auto !important;
min-height: 200px !important;
max-height: none !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch !important;
overscroll-behavior: contain !important;
touch-action: pan-y !important;
}
.task-log-container {
flex: 1 1 auto !important;
min-height: 200px !important;
max-height: none !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch !important;
overscroll-behavior: contain !important;
touch-action: pan-y !important;
}
.task-log-console {
max-height: none !important;
height: auto !important;
min-height: 100% !important;
touch-action: pan-y !important;
}
.task-win-footer {
padding: 10px 12px max(24px, calc(env(safe-area-inset-bottom, 0px) + 14px)) 12px !important;
background: #181a20 !important;
border-top: 1px solid var(--border) !important;
display: grid !important;
grid-template-columns: repeat(4, 1fr) !important;
gap: 6px !important;
flex-shrink: 0;
}
.task-footer-left,
.task-footer-right {
display: contents !important;
}
.task-win-footer .btn {
width: 100% !important;
padding: 8px 4px !important;
font-size: 11px !important;
font-weight: 600 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
gap: 4px !important;
white-space: nowrap !important;
}
.btn-task-control.btn-task-close {
width: 32px !important;
height: 32px !important;
}
}
.task-batch-summary {
padding: 10px 14px 8px 14px;
background: #1a1c22;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.task-progress-meta {
display: grid;
grid-template-columns: minmax(110px, 1fr) 52px minmax(130px, 1fr) minmax(80px, auto);
align-items: center;
gap: 8px;
font-size: 11px;
color: var(--text-muted);
margin-bottom: 5px;
font-family: var(--font-mono);
}
.task-progress-meta > span:nth-child(1) {
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.task-progress-meta > span:nth-child(2) {
text-align: center;
font-weight: 700;
color: var(--text-main);
font-variant-numeric: tabular-nums;
}
.task-progress-meta > span:nth-child(3) {
text-align: right;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.task-progress-meta > span:nth-child(4) {
text-align: right;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.task-progress-bar-track {
width: 100%;
height: 8px;
background: rgba(255, 255, 255, 0.08);
border-radius: 4px;
overflow: hidden;
position: relative;
}
.task-progress-bar-fill {
height: 100%;
background: linear-gradient(90deg, #f59e0b, #fbbf24);
width: 0%;
border-radius: 4px;
transition: width 0.25s ease;
}
.task-active-file-card {
padding: 10px 14px;
background: #14161a;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.task-file-info {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
margin-bottom: 4px;
}
.task-cur-filename {
font-weight: 600;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 320px;
}
.task-cur-speed {
font-family: var(--font-mono);
font-size: 10px;
color: var(--accent);
font-weight: 700;
}
.task-file-track {
height: 5px;
background: rgba(255, 255, 255, 0.05);
}
.task-file-fill {
background: linear-gradient(90deg, #38bdf8, #818cf8);
}
.task-file-stats {
display: flex;
justify-content: space-between;
font-size: 10px;
color: var(--text-muted);
margin-top: 3px;
font-family: var(--font-mono);
}
.task-queue-container {
max-height: 180px;
overflow-y: auto;
background: #121418;
}
.task-queue-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 14px;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
font-size: 11px;
gap: 8px;
user-select: text;
-webkit-user-select: text;
}
.task-queue-item:hover {
background: rgba(255, 255, 255, 0.03);
}
.task-queue-details {
flex: 1;
overflow: hidden;
user-select: text;
-webkit-user-select: text;
}
.task-queue-error-box {
margin-top: 6px;
padding: 6px 8px;
background: rgba(239, 68, 68, 0.12);
border: 1px solid rgba(239, 68, 68, 0.3);
border-radius: 4px;
font-size: 10px;
color: #fca5a5;
display: flex;
align-items: flex-start;
gap: 6px;
user-select: text;
-webkit-user-select: text;
cursor: pointer;
transition: background 0.15s;
}
.task-queue-error-box:hover {
background: rgba(239, 68, 68, 0.2);
}
.task-queue-name {
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.task-queue-sub {
font-size: 10px;
color: var(--text-muted);
font-family: var(--font-mono);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.task-queue-badge {
padding: 2px 6px;
border-radius: 3px;
font-size: 9px;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.task-badge-running { background: rgba(245, 158, 11, 0.2); color: var(--accent); }
.task-badge-completed { background: rgba(34, 197, 94, 0.2); color: #22c55e; }
.task-badge-failed { background: rgba(239, 68, 68, 0.2); color: #ef4444; }
.task-badge-paused { background: rgba(148, 163, 184, 0.2); color: #94a3b8; }
.task-badge-cancelled { background: rgba(100, 116, 139, 0.2); color: #64748b; }
.task-log-container {
max-height: 180px;
overflow-y: auto;
background: #0d0f12;
padding: 8px 12px;
user-select: text !important;
-webkit-user-select: text !important;
}
.task-log-console {
margin: 0;
font-family: 'JetBrains Mono', 'Fira Code', var(--font-mono);
font-size: 10.5px;
color: #a3e635;
white-space: pre-wrap;
word-break: break-all;
line-height: 1.45;
user-select: text !important;
-webkit-user-select: text !important;
}
.task-win-footer {
display: flex;
justify-content: space-between;
align-items: center;
padding: 6px 12px;
background: #1c1f26;
border-top: 1px solid var(--border);
}
.task-footer-left {
display: flex;
gap: 4px;
}
.tasks-pill-pulse {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--accent);
flex-shrink: 0;
}
.tasks-pill-speed {
font-family: var(--font-mono);
font-weight: 700;
font-size: 10px;
background: rgba(245, 158, 11, 0.25);
padding: 1px 6px;
border-radius: 4px;
font-variant-numeric: tabular-nums;
min-width: 62px;
text-align: center;
display: inline-block;
}
.session-lock-screen {
--bg-main: #101014;
--bg-body: #101014;
--bg-panel: #16161c;
--bg-hover: rgba(255, 255, 255, 0.08);
--text-main: #f4f4f5;
--text-muted: #a1a1aa;
--text-dim: #71717a;
--border: rgba(255, 255, 255, 0.12);
--accent: #f59e0b;
--accent-hover: #fbbf24;
color: #f4f4f5;
color-scheme: dark;
display: none;
position: fixed;
inset: 0;
z-index: 99999;
align-items: center;
justify-content: flex-start;
padding: 40px 24px 40px max(48px, 12vw);
background-color: #101014;
background-image:
radial-gradient(ellipse 70% 55% at 50% 50%, rgba(245, 158, 11, 0.15) 0%, rgba(217, 119, 6, 0.08) 50%, transparent 75%),
radial-gradient(ellipse 80% 60% at 15% 15%, rgba(245, 158, 11, 0.10) 0%, transparent 65%),
radial-gradient(ellipse 75% 55% at 85% 85%, rgba(217, 119, 6, 0.08) 0%, transparent 65%),
linear-gradient(140deg, #0a0a0d 0%, #121217 45%, #151310 100%);
overflow: hidden;
}
.session-lock-screen.active {
display: flex !important;
}
.lock-screen-card {
width: 100%;
max-width: 385px;
background: rgba(16, 17, 22, 0.42);
backdrop-filter: blur(18px) saturate(180%);
-webkit-backdrop-filter: blur(18px) saturate(180%);
border: 1px solid rgba(245, 158, 11, 0.38);
border-radius: 14px;
box-shadow:
0 24px 60px rgba(0, 0, 0, 0.65),
0 0 40px rgba(245, 158, 11, 0.15),
inset 0 1px 1px rgba(255, 255, 255, 0.22),
inset 0 -1px 1px rgba(0, 0, 0, 0.4);
overflow: hidden;
position: relative;
z-index: 20;
animation: loginCardPop 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}
.lock-screen-header {
padding: 22px 24px 18px;
display: flex;
align-items: center;
gap: 14px;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
background: linear-gradient(180deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.01) 100%);
}
.lock-avatar-thumb {
width: 48px;
height: 48px;
min-width: 48px;
min-height: 48px;
border-radius: 50%;
background: rgba(18, 18, 22, 0.8);
border: 2px solid var(--accent, #f59e0b);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
line-height: 1;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5), inset 0 1px 1px rgba(255, 255, 255, 0.12);
user-select: none;
flex-shrink: 0;
}
.lock-avatar-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.lock-header-text {
flex: 1;
min-width: 0;
}
.lock-user-label {
font-size: 15px;
font-weight: 700;
color: var(--text-main, #f4f4f5);
line-height: 1.3;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.lock-sub-text {
font-size: 11.5px;
color: var(--text-muted, #a1a1aa);
margin-top: 2px;
line-height: 1.3;
}
.lock-card-body {
padding: 20px 24px 12px;
}
.lock-card-footer {
padding: 12px 24px 22px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
}
.btn-switch-user {
background: transparent;
border: 1px solid transparent;
color: var(--text-dim, #71717a);
font-size: 11.5px;
padding: 6px 10px;
border-radius: 6px;
display: inline-flex;
align-items: center;
gap: 5px;
cursor: pointer;
transition: all 0.15s ease;
}
.btn-switch-user:hover {
color: var(--text-muted, #a1a1aa);
background: rgba(255, 255, 255, 0.05);
border-color: rgba(255, 255, 255, 0.1);
}
#app-dialog-modal {
z-index: 9999 !important;
}
.dialog-box {
background: #181a20;
border: 1px solid rgba(255, 255, 255, 0.18);
border-radius: 10px;
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.8), 0 0 0 1px rgba(0, 0, 0, 0.5);
animation: dialogScaleIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
overflow: hidden;
}
@keyframes dialogScaleIn {
from {
opacity: 0;
transform: scale(0.94) translateY(12px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
.dialog-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 14px 16px;
background: #20232c;
border-bottom: 1px solid var(--border);
}
.dialog-icon-wrapper {
width: 36px;
height: 36px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(245, 158, 11, 0.15);
color: var(--accent);
}
.dialog-icon-wrapper.danger {
background: rgba(239, 68, 68, 0.15);
color: #ef4444;
}
.dialog-icon-wrapper.success {
background: rgba(34, 197, 94, 0.15);
color: #22c55e;
}
.dialog-icon-wrapper.info {
background: rgba(56, 189, 248, 0.15);
color: #38bdf8;
}
.dialog-title {
font-weight: 700;
font-size: 14px;
color: var(--text-main);
}
.dialog-subtitle {
font-size: 11px;
color: var(--text-muted);
}
.dialog-body {
padding: 16px;
font-size: 13px;
line-height: 1.5;
color: var(--text-main);
}
.dialog-message {
margin-bottom: 10px;
word-break: break-word;
}
.dialog-items-preview {
max-height: 140px;
overflow-y: auto;
background: #111317;
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 6px;
padding: 8px 10px;
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-dim);
display: flex;
flex-direction: column;
gap: 4px;
}
.dialog-footer {
display: flex;
justify-content: flex-end;
gap: 8px;
padding: 12px 16px;
background: #1d2028;
border-top: 1px solid var(--border);
}
.toast-container {
position: fixed;
top: 20px;
left: 50%;
transform: translateX(-50%);
z-index: 99999 !important;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
pointer-events: none;
width: max-content;
max-width: calc(100vw - 32px);
}
.toast {
pointer-events: auto;
display: flex;
align-items: center;
gap: 10px;
padding: 10px 16px;
background: #1e2129;
border: 1px solid rgba(255, 255, 255, 0.14);
border-radius: 6px;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.65);
color: var(--text-main);
font-size: 12px;
font-weight: 500;
min-width: 240px;
max-width: 400px;
animation: toastIn 0.25s cubic-bezier(0.16, 1, 0.3, 1), toastOut 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
animation-delay: 0s, var(--toast-duration, 3.2s);
}
.toast.toast-success {
border-left: 3px solid #22c55e;
}
.toast.toast-error {
border-left: 3px solid #ef4444;
}
.toast.toast-info {
border-left: 3px solid #38bdf8;
}
.toast.toast-warning {
border-left: 3px solid var(--accent);
}
@keyframes toastIn {
from {
opacity: 0;
transform: translateY(-12px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes toastOut {
from {
opacity: 1;
transform: translateY(0) scale(1);
}
to {
opacity: 0;
transform: translateY(-12px) scale(0.95);
}
}
.image-viewer-toolbar {
position: relative;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
padding: 6px 12px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
flex-shrink: 0;
min-height: 42px;
box-sizing: border-box;
user-select: none;
cursor: grab;
}
.image-viewer-toolbar:active {
cursor: grabbing;
}
.image-viewer-title-group {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
max-width: calc(50% - 60px);
flex-shrink: 1;
overflow: hidden;
user-select: none;
}
.image-viewer-nav-pill {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
display: flex;
align-items: center;
gap: 2px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 1px 4px;
height: 28px;
box-sizing: border-box;
flex-shrink: 0;
z-index: 5;
cursor: default;
pointer-events: auto;
}
.image-viewer-nav-pill button,
.image-viewer-nav-pill .btn-icon {
width: 24px !important;
height: 24px !important;
min-width: 24px !important;
min-height: 24px !important;
border-radius: var(--radius-sm, 4px) !important;
padding: 0 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
.image-viewer-nav-pill button i,
.image-viewer-nav-pill button svg {
width: 12px;
height: 12px;
}
.image-viewer-actions-group {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
margin-left: auto;
z-index: 2;
cursor: default;
}
@media (max-width: 1024px) {
.floating-editor-window {
top: 0 !important;
left: 0 !important;
width: 100vw !important;
height: 100vh !important;
max-width: 100vw !important;
max-height: 100vh !important;
border-radius: 0 !important;
border: none !important;
box-shadow: none !important;
}
.floating-editor-window .win-resize-handle {
display: none !important;
}
.editor-header {
padding: 6px 10px;
height: 44px;
display: flex;
justify-content: space-between;
align-items: center;
}
.editor-header-right button {
min-height: 32px;
padding: 4px 8px;
}
.editor-touch-menu {
position: fixed !important;
bottom: 0 !important;
left: 0 !important;
right: 0 !important;
top: auto !important;
width: 100vw !important;
max-height: 80vh !important;
overflow-y: auto !important;
border-radius: 16px 16px 0 0 !important;
box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.85) !important;
border: 1px solid var(--border) !important;
border-bottom: none !important;
padding: 12px 12px 28px 12px !important;
background: #14171f !important;
z-index: 2900 !important;
}
.editor-touch-menu .dropdown-item {
padding: 12px 14px !important;
font-size: 13.5px !important;
min-height: 44px !important;
display: flex !important;
align-items: center !important;
gap: 10px !important;
border-radius: 8px !important;
}
.editor-touch-menu .dropdown-item:active {
background: rgba(245, 158, 11, 0.2) !important;
}
.editor-tab-strip {
height: 30px;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.editor-tab {
padding: 0 10px;
font-size: 11px;
max-width: 160px;
min-height: 26px;
}
.editor-find-bar {
padding: 8px 10px;
}
.editor-find-bar input {
width: 130px !important;
}
.editor-grid.dual-vertical {
grid-template-columns: 1fr !important;
grid-template-rows: 1fr 1fr !important;
}
.editor-gutter {
width: 38px !important;
min-width: 38px !important;
font-size: 10.5px !important;
padding-right: 6px !important;
}
.editor-textarea {
font-size: 12px !important;
padding: 8px !important;
}
.image-viewer-box {
width: 100vw !important;
height: 100vh !important;
max-width: 100vw !important;
max-height: 100vh !important;
border-radius: 0 !important;
border: none !important;
}
.image-viewer-toolbar {
padding: 6px 10px;
height: 42px;
}
.image-viewer-title-group {
max-width: calc(50% - 50px);
}
.image-viewer-nav-pill {
padding: 1px 2px;
}
.doc-viewer-box {
width: 100vw !important;
height: 100% !important;
height: 100dvh !important;
height: var(--viewport-height, 100dvh) !important;
max-width: 100vw !important;
max-height: 100% !important;
max-height: 100dvh !important;
max-height: var(--viewport-height, 100dvh) !important;
border-radius: 0 !important;
border: none !important;
}
.doc-view-panel.markdown-preview-pane {
padding: 14px 16px !important;
}
.media-player-box {
width: 96vw !important;
max-width: 96vw !important;
margin: auto;
}
.modal-box[style*="book-reader-modal"] {
width: 100vw !important;
height: 100vh !important;
border-radius: 0 !important;
}
}
.color-dot {
width: 13px;
height: 13px;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: transform 0.15s ease;
font-size: 8.5px;
font-weight: 800;
box-shadow: 0 1px 3px rgba(0,0,0,0.5);
}
.color-dot:hover {
transform: scale(1.3);
}
.context-color-palette {
display: flex;
align-items: center;
gap: 5px;
margin-left: auto;
padding: 3px 6px;
background: var(--bg-dark);
border-radius: 12px;
border: 1px solid var(--border);
}
.color-dot.color-red, .color-dot-mini.color-red, .tag-color-btn.color-red { background-color: #ef4444 !important; }
.color-dot.color-orange, .color-dot-mini.color-orange, .tag-color-btn.color-orange { background-color: #f97316 !important; }
.color-dot.color-yellow, .color-dot-mini.color-yellow, .tag-color-btn.color-yellow { background-color: #eab308 !important; }
.color-dot.color-green, .color-dot-mini.color-green, .tag-color-btn.color-green { background-color: #22c55e !important; }
.color-dot.color-blue, .color-dot-mini.color-blue, .tag-color-btn.color-blue { background-color: #3b82f6 !important; }
.color-dot.color-purple, .color-dot-mini.color-purple, .tag-color-btn.color-purple { background-color: #a855f7 !important; }
.color-dot.color-none, .color-dot-mini.color-none, .tag-color-btn.color-none { background-color: transparent !important; border: 1px dashed var(--text-dim); color: var(--text-dim); }
.tags-color-picker {
display: flex;
gap: 8px;
align-items: center;
}
.tag-color-btn {
width: 26px;
height: 26px;
border-radius: 50%;
border: 2px solid transparent;
cursor: pointer;
transition: all 0.15s ease;
display: inline-flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 11px;
}
.tag-color-btn.active {
border-color: #fff !important;
transform: scale(1.18);
box-shadow: 0 0 10px rgba(255, 255, 255, 0.4);
}
.file-tag-badge {
font-size: 9.5px;
font-family: var(--font-mono);
padding: 1px 5px;
border-radius: 3px;
background: rgba(255, 255, 255, 0.08);
color: var(--text-muted);
display: inline-flex;
align-items: center;
gap: 3px;
margin-left: 6px;
vertical-align: middle;
}
.file-row-color-red { border-left: 3px solid #ef4444 !important; background: rgba(239, 68, 68, 0.05); }
.file-row-color-orange { border-left: 3px solid #f97316 !important; background: rgba(249, 115, 22, 0.05); }
.file-row-color-yellow { border-left: 3px solid #eab308 !important; background: rgba(234, 179, 8, 0.05); }
.file-row-color-green { border-left: 3px solid #22c55e !important; background: rgba(34, 197, 94, 0.05); }
.file-row-color-blue { border-left: 3px solid #3b82f6 !important; background: rgba(59, 130, 246, 0.05); }
.file-row-color-purple { border-left: 3px solid #a855f7 !important; background: rgba(168, 85, 247, 0.05); }
.branch-view-banner,
.virtual-pane-banner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 4px 10px;
background: rgba(245, 158, 11, 0.12);
border-bottom: 1px solid rgba(245, 158, 11, 0.3);
color: var(--accent);
font-size: 11px;
font-weight: 600;
flex-shrink: 0;
}
.branch-view-badge,
.virtual-pane-badge {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 2px 7px;
border-radius: 4px;
font-size: 10px;
font-weight: 700;
background: rgba(245, 158, 11, 0.2);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.4);
}
.pane-trash-banner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 12px;
background: linear-gradient(90deg, rgba(239, 68, 68, 0.14) 0%, rgba(245, 158, 11, 0.08) 100%);
border-bottom: 1px solid rgba(239, 68, 68, 0.35);
color: var(--text-main);
font-size: 11.5px;
flex-shrink: 0;
position: sticky;
top: 0;
z-index: 10;
backdrop-filter: blur(4px);
}
.pane-trash-info {
display: flex;
align-items: center;
gap: 8px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.pane-trash-actions {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.pane-branch-banner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 12px;
background: linear-gradient(90deg, rgba(245, 158, 11, 0.16) 0%, rgba(245, 158, 11, 0.08) 100%);
border-bottom: 1px solid rgba(245, 158, 11, 0.35);
color: var(--text-main);
font-size: 11.5px;
flex-shrink: 0;
position: sticky;
top: 0;
z-index: 10;
backdrop-filter: blur(4px);
}
.branch-banner-info {
display: flex;
align-items: center;
gap: 8px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.branch-banner-icon {
width: 14px;
height: 14px;
color: var(--accent);
flex-shrink: 0;
}
.branch-banner-title {
font-weight: 700;
color: var(--accent);
letter-spacing: 0.2px;
}
.branch-banner-count {
color: var(--text-muted);
font-size: 11px;
}
.branch-banner-badge {
display: inline-flex;
align-items: center;
padding: 1px 6px;
border-radius: 4px;
background: rgba(239, 68, 68, 0.18);
border: 1px solid rgba(239, 68, 68, 0.35);
color: #f87171;
font-size: 10px;
font-weight: 600;
}
.branch-banner-exit {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 8px;
border-radius: var(--radius, 6px);
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(245, 158, 11, 0.4);
color: var(--accent);
font-size: 11px;
font-weight: 600;
cursor: pointer;
transition: all 0.15s ease;
white-space: nowrap;
}
.branch-banner-exit:hover {
background: rgba(245, 158, 11, 0.22);
border-color: var(--accent);
color: #fff;
}
.branch-banner-exit kbd {
display: inline-block;
padding: 1px 4px;
font-size: 9px;
font-family: var(--font-mono);
background: rgba(0, 0, 0, 0.3);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 3px;
color: var(--text-muted);
}
.pane-branch-loading {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 40px 20px;
color: var(--text-main);
text-align: center;
}
.floating-calculator-window {
position: fixed;
width: 330px;
background-color: var(--bg-header);
border: 1px solid var(--border);
border-radius: 10px;
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.7);
display: flex;
flex-direction: column;
z-index: 1750;
overflow: hidden;
user-select: none;
font-family: var(--font-main);
}
.calc-header {
padding: 6px 12px;
min-height: 42px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
cursor: grab;
box-sizing: border-box;
}
.calc-header:active {
cursor: grabbing;
}
.calc-body {
padding: 10px 12px;
display: flex;
flex-direction: column;
gap: 8px;
background: #0d0f14;
}
.calc-display-panel {
background: #050608;
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 8px 10px;
display: flex;
flex-direction: column;
gap: 2px;
}
.calc-expression-line {
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
text-align: right;
min-height: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.calc-result-row {
display: flex;
align-items: center;
gap: 6px;
}
.calc-copy-btn {
width: 26px !important;
height: 26px !important;
min-width: 26px !important;
min-height: 26px !important;
border-radius: var(--radius) !important;
padding: 0 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
.calc-result-input {
flex: 1;
background: transparent;
border: none;
color: #fff;
font-family: var(--font-mono);
font-size: 20px;
font-weight: 700;
text-align: right;
outline: none;
width: 100%;
}
.calc-converters-bar {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4px;
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius);
padding: 5px 8px;
font-family: var(--font-mono);
font-size: 10px;
}
.calc-conv-item {
display: flex;
align-items: center;
gap: 4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.calc-conv-lbl {
color: var(--accent);
font-weight: 700;
font-size: 9.5px;
}
.calc-conv-val {
color: var(--text-main);
overflow: hidden;
text-overflow: ellipsis;
}
.calc-units-row {
display: flex;
gap: 4px;
justify-content: space-between;
}
.calc-unit-btn {
flex: 1;
height: 26px;
min-height: 26px;
font-size: 10px;
font-family: var(--font-mono);
font-weight: 700;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
background: rgba(245, 158, 11, 0.12);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.25);
border-radius: var(--radius);
cursor: pointer;
box-sizing: border-box;
}
.calc-unit-btn:hover {
background: rgba(245, 158, 11, 0.25);
}
.calc-keypad-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 5px;
}
.calc-btn {
height: 34px;
font-size: 13px;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
border: 1px solid var(--border);
transition: all 0.1s ease;
cursor: pointer;
}
.calc-btn-num {
background: #14171f;
color: #fff;
}
.calc-btn-num:hover {
background: #1e232f;
border-color: rgba(255,255,255,0.2);
}
.calc-btn-fn {
background: #0f1218;
color: var(--text-dim);
}
.calc-btn-fn:hover {
background: #181d26;
color: #fff;
}
.calc-btn-op {
background: rgba(56, 189, 248, 0.1);
color: #38bdf8;
border-color: rgba(56, 189, 248, 0.2);
font-size: 15px;
}
.calc-btn-op:hover {
background: rgba(56, 189, 248, 0.22);
}
.calc-btn-equals {
background: var(--accent);
color: #000;
font-weight: 800;
font-size: 16px;
border-color: var(--accent);
}
.calc-btn-equals:hover {
background: #f59e0b;
box-shadow: 0 0 10px rgba(245, 158, 11, 0.4);
}
.calc-history-panel {
margin-top: 4px;
border-top: 1px solid var(--border);
padding-top: 6px;
max-height: 140px;
display: flex;
flex-direction: column;
gap: 4px;
}
.calc-history-header {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 10px;
font-weight: 700;
color: var(--text-muted);
text-transform: uppercase;
}
.calc-history-list {
overflow-y: auto;
max-height: 105px;
display: flex;
flex-direction: column;
gap: 4px;
}
.calc-history-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 3px 6px;
background: rgba(255,255,255,0.03);
border-radius: 4px;
font-family: var(--font-mono);
font-size: 10.5px;
cursor: pointer;
}
.calc-history-item:hover {
background: rgba(245, 158, 11, 0.1);
color: var(--accent);
}
.calc-pill {
position: fixed;
bottom: 12px;
right: 170px;
background: var(--bg-header);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 4px 10px;
display: flex;
align-items: center;
gap: 6px;
font-size: 11px;
font-weight: 600;
color: var(--accent);
box-shadow: 0 4px 12px rgba(0,0,0,0.5);
cursor: pointer;
z-index: 1550;
transition: transform 0.15s ease;
}
.calc-pill:hover {
transform: translateY(-2px);
background: var(--bg-hover);
}
.floating-notedog-window {
position: fixed;
top: 55px;
left: 80px;
width: min(1080px, calc(100vw - 60px));
height: min(720px, calc(100vh - 85px));
max-width: 100vw;
max-height: 100vh;
min-width: 480px;
min-height: 320px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(255, 255, 255, 0.08);
display: flex;
flex-direction: column;
z-index: 1550;
overflow: hidden;
animation: editorWinPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
user-select: none;
}
.floating-notedog-window.maximized {
top: 40px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 72px) !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.notedog-pill {
position: fixed;
bottom: 42px;
left: 170px;
z-index: 1800;
display: flex;
align-items: center;
gap: 8px;
background: #181a20;
border: 1px solid var(--accent);
border-radius: 20px;
padding: 6px 14px;
font-family: var(--font-mono);
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6);
cursor: pointer;
user-select: none;
transition: all 0.18s ease;
}
.notedog-pill:hover {
transform: translateY(-2px);
background: #222630;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.8), 0 0 12px rgba(245, 158, 11, 0.3);
}
.notedog-pill-dirty {
width: 6px;
height: 6px;
border-radius: 50%;
background: #f59e0b;
}
.notedog-header {
padding: 6px 12px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
flex-shrink: 0;
user-select: none;
cursor: grab;
min-height: 42px;
box-sizing: border-box;
}
.notedog-header:active {
cursor: grabbing;
}
.notedog-header-left,
.notedog-header-actions {
display: flex;
align-items: center;
gap: 4px;
flex-wrap: nowrap;
}
.notedog-header-actions button,
.notedog-header-actions .btn,
.notedog-header-left button,
.notedog-header-left .btn {
height: 28px !important;
line-height: 26px !important;
font-size: 11px !important;
box-sizing: border-box;
cursor: pointer;
}
.notedog-header-actions .btn-icon,
.notedog-header-left .btn-icon {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
min-height: 28px !important;
max-width: 28px !important;
max-height: 28px !important;
padding: 0 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
border-radius: var(--radius) !important;
box-sizing: border-box;
}
.notedog-header-actions .btn-icon i,
.notedog-header-actions .btn-icon svg,
.notedog-header-left .btn-icon i,
.notedog-header-left .btn-icon svg {
width: 14px;
height: 14px;
}
.notedog-header-actions .layout-btn-group {
display: flex;
gap: 3px;
align-items: center;
}
.notedog-header-actions .notedog-mode-btn {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
min-height: 28px !important;
padding: 0 !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-muted);
border-radius: var(--radius) !important;
cursor: pointer;
transition: all 0.15s ease;
}
.notedog-header-actions .notedog-mode-btn:hover {
background: var(--bg-hover);
color: var(--text-main);
border-color: var(--border-bright);
}
.notedog-header-actions .notedog-mode-btn.active {
background: rgba(245, 158, 11, 0.18) !important;
color: var(--accent) !important;
border-color: var(--accent) !important;
font-weight: 600 !important;
}
.notedog-badge-tag {
font-size: 10px;
font-family: var(--font-mono);
padding: 2px 8px;
background: rgba(255, 255, 255, 0.06);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text-dim);
max-width: 220px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.notedog-body {
flex: 1;
display: flex;
overflow: hidden;
height: 100%;
background: var(--bg-panel);
}
.notedog-sidebar {
width: 280px;
min-width: 200px;
max-width: 400px;
background: var(--bg-dark);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
overflow: hidden;
transition: width 0.22s cubic-bezier(0.16, 1, 0.3, 1), transform 0.24s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease;
}
.floating-notedog-window.sidebar-collapsed .notedog-sidebar {
width: 0 !important;
min-width: 0 !important;
max-width: 0 !important;
border-right: none !important;
opacity: 0 !important;
pointer-events: none !important;
}
.notedog-drawer-backdrop {
display: none;
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.55);
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
z-index: 45;
opacity: 0;
pointer-events: none;
transition: opacity 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}
.notedog-drawer-btn {
transition: all 0.15s ease;
}
.notedog-drawer-btn.active,
.floating-notedog-window.drawer-open #btn-notedog-drawer-toggle,
.floating-notedog-window.drawer-open #btn-notedog-workspace-drawer {
background: rgba(245, 158, 11, 0.18) !important;
color: var(--accent) !important;
border-color: rgba(245, 158, 11, 0.4) !important;
}
@media (min-width: 1025px) {
.mobile-or-tablet-only {
display: none !important;
}
}
.notedog-tier {
display: flex;
flex-direction: column;
overflow: hidden;
border-bottom: 1px solid var(--border);
}
.notedog-tier:last-child {
border-bottom: none;
flex: 1;
}
.notedog-tier-notebooks {
max-height: 140px;
}
.notedog-tier-sections {
max-height: 150px;
}
.notedog-tier-notes {
flex: 1;
}
.notedog-tier-header {
padding: 6px 10px;
background: rgba(0, 0, 0, 0.2);
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.notedog-tier-list {
flex: 1;
overflow-y: auto;
padding: 4px;
display: flex;
flex-direction: column;
gap: 2px;
}
.notedog-item {
display: flex;
align-items: center;
gap: 6px;
padding: 5px 8px;
border-radius: 4px;
font-size: 11px;
color: var(--text-primary);
cursor: pointer;
transition: all 0.12s ease;
border: 1px solid transparent;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.notedog-item:hover {
background: rgba(255, 255, 255, 0.05);
color: var(--text-bright);
}
.notedog-item.active {
background: rgba(245, 158, 11, 0.15);
border-color: rgba(245, 158, 11, 0.4);
color: var(--accent);
font-weight: 600;
}
.notedog-item-count {
margin-left: auto;
font-size: 9px;
color: var(--text-dim);
background: rgba(0, 0, 0, 0.3);
padding: 1px 5px;
border-radius: 10px;
}
.notedog-workspace {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
background: var(--bg-panel);
position: relative;
}
.notedog-workspace-header {
padding: 4px 8px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
min-height: 34px;
}
.notedog-workspace-actions {
display: flex;
align-items: center;
gap: 3px;
flex-shrink: 0;
}
.notedog-workspace-actions button,
.notedog-workspace-actions .btn,
.notedog-workspace-actions .btn-icon {
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-muted);
cursor: pointer;
padding: 0 !important;
width: 26px !important;
min-width: 26px !important;
max-width: 26px !important;
height: 26px !important;
min-height: 26px !important;
max-height: 26px !important;
border-radius: var(--radius) !important;
font-size: 12px;
display: inline-flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
margin: 0;
line-height: 1;
transition: all 0.15s ease;
flex-shrink: 0;
}
.notedog-workspace-actions button:hover,
.notedog-workspace-actions .btn:hover,
.notedog-workspace-actions .btn-icon:hover {
background: var(--bg-hover);
color: var(--text-main);
border-color: var(--accent);
}
.notedog-workspace-actions button i,
.notedog-workspace-actions button svg,
.notedog-workspace-actions .btn-icon i,
.notedog-workspace-actions .btn-icon svg {
width: 14px;
height: 14px;
display: block;
}
.notedog-workspace-actions #btn-save-notedog.btn-accent,
.notedog-workspace-actions .btn-accent {
background-color: var(--accent) !important;
color: #121214 !important;
border-color: var(--accent) !important;
}
.notedog-workspace-actions #btn-save-notedog.btn-accent:hover,
.notedog-workspace-actions .btn-accent:hover {
background-color: var(--accent-hover) !important;
border-color: var(--accent-hover) !important;
}
.notedog-workspace-actions .btn-danger-hover:hover {
background: rgba(239, 68, 68, 0.15) !important;
color: #ef4444 !important;
border-color: #ef4444 !important;
}
.notedog-note-title-input {
font-size: 14px;
font-weight: 700;
color: var(--text-bright);
background: transparent;
border: 1px solid transparent;
border-radius: 4px;
padding: 2px 6px;
outline: none;
flex: 1;
}
.notedog-note-title-input:hover, .notedog-note-title-input:focus {
background: var(--bg-dark);
border-color: var(--border);
}
.notedog-save-status {
font-size: 10px;
font-family: var(--font-mono);
color: var(--text-dim);
padding: 2px 6px;
}
.notedog-save-status.unsaved {
color: #fbbf24;
font-weight: 600;
}
.notedog-formatting-bar {
padding: 4px 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
gap: 4px;
overflow-x: auto;
}
.notedog-fmt-sep {
width: 1px;
height: 16px;
background: var(--border);
margin: 0 4px;
}
.notedog-panes-wrapper {
flex: 1;
display: flex;
overflow: hidden;
height: 100%;
}
.notedog-panes-wrapper.split-mode .notedog-editor-pane {
width: 50%;
border-right: 1px solid var(--border);
}
.notedog-panes-wrapper.split-mode .notedog-preview-pane {
width: 50%;
display: block;
}
.notedog-panes-wrapper.edit-mode .notedog-editor-pane {
width: 100%;
border-right: none;
}
.notedog-panes-wrapper.edit-mode .notedog-preview-pane {
display: none;
}
.notedog-panes-wrapper.preview-mode .notedog-editor-pane {
display: none;
}
.notedog-panes-wrapper.preview-mode .notedog-preview-pane {
width: 100%;
display: block;
}
.notedog-pane {
height: 100%;
overflow: hidden;
position: relative;
display: flex;
}
.notedog-editor-gutter {
width: 38px;
background: #111318;
color: var(--text-dim);
font-family: var(--font-mono);
font-size: 12px;
line-height: 1.5;
padding: 10px 6px;
text-align: right;
user-select: none;
border-right: 1px solid rgba(255, 255, 255, 0.05);
}
.notedog-textarea {
flex: 1;
height: 100%;
background: #181a1f;
color: #f8fafc;
font-family: var(--font-mono);
font-size: 12px;
line-height: 1.5;
padding: 10px 14px;
border: none;
outline: none;
resize: none;
white-space: pre;
}
.notedog-preview-pane {
background: var(--bg-panel);
overflow-y: auto;
padding: 16px 20px;
user-select: text;
display: flex;
flex-direction: column;
}
.notedog-preview-content {
line-height: 1.6;
color: var(--text-primary);
font-size: 13px;
width: 100%;
flex: 1;
}
.notedog-preview-content h1 {
font-size: 20px;
font-weight: 800;
color: var(--accent);
margin-top: 4px;
margin-bottom: 12px;
border-bottom: 1px solid var(--border);
padding-bottom: 6px;
}
.notedog-preview-content h2 {
font-size: 16px;
font-weight: 700;
color: var(--text-bright);
margin-top: 16px;
margin-bottom: 8px;
}
.notedog-preview-content h3 {
font-size: 14px;
font-weight: 600;
color: var(--accent);
margin-top: 12px;
margin-bottom: 6px;
}
.notedog-preview-content p {
margin-bottom: 10px;
}
.notedog-preview-content ul, .notedog-preview-content ol {
padding-left: 20px;
margin-bottom: 10px;
}
.notedog-preview-content hr {
border: none;
border-top: 1px solid var(--border);
margin: 16px 0;
}
.notedog-preview-content blockquote {
border-left: 3px solid var(--accent);
padding: 4px 12px;
margin: 10px 0;
background: rgba(255, 255, 255, 0.03);
color: var(--text-muted);
font-style: italic;
}
.notedog-preview-content code {
background: rgba(255, 255, 255, 0.08);
color: #38bdf8;
font-family: var(--font-mono);
padding: 1px 5px;
border-radius: 3px;
font-size: 12px;
}
.notedog-preview-content pre {
background: #090a0d;
border: 1px solid var(--border);
border-radius: 6px;
padding: 10px 14px;
overflow-x: auto;
margin: 12px 0;
}
.notedog-preview-content pre code {
background: transparent;
padding: 0;
color: #f1f5f9;
}
.notedog-task-item {
display: flex;
align-items: center;
gap: 8px;
margin: 4px 0;
cursor: pointer;
user-select: none;
}
.notedog-task-checkbox {
width: 14px;
height: 14px;
accent-color: var(--accent);
cursor: pointer;
}
.notedog-task-text.completed {
text-decoration: line-through;
color: var(--text-dim);
}
.notedog-mermaid-box {
background: #090a0d;
border: 1px solid var(--border);
border-radius: 6px;
padding: 12px;
margin: 12px 0;
overflow-x: auto;
}
.notedog-storage-mode-bar {
padding: 4px 6px;
background: rgba(0, 0, 0, 0.25);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
}
.notedog-storage-toggle-group {
display: flex;
gap: 2px;
flex: 1;
background: var(--bg-panel);
border-radius: var(--radius);
padding: 2px;
border: 1px solid var(--border);
}
.notedog-storage-btn {
flex: 1;
height: 22px;
font-size: 10px;
font-weight: 600;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
border-radius: 4px;
border: none;
background: transparent;
color: var(--text-muted);
cursor: pointer;
transition: all 0.12s ease;
}
.notedog-storage-btn:hover {
color: var(--text-bright);
background: rgba(255, 255, 255, 0.05);
}
.notedog-storage-btn.active {
background: rgba(245, 158, 11, 0.2);
color: var(--accent);
font-weight: 700;
}
.notedog-color-indicator {
width: 14px;
height: 14px;
border-radius: 50%;
border: 1px solid rgba(255, 255, 255, 0.25);
cursor: pointer;
flex-shrink: 0;
background: transparent;
transition: transform 0.12s ease;
}
.notedog-color-indicator:hover {
transform: scale(1.2);
}
.notedog-cat-chip,
.notedog-sec-chip {
font-size: 10px;
font-weight: 600;
padding: 1px 6px;
border-radius: 4px;
background: rgba(245, 158, 11, 0.12);
color: var(--accent);
cursor: pointer;
border: 1px solid rgba(245, 158, 11, 0.25);
transition: all 0.12s ease;
}
.notedog-cat-chip:hover,
.notedog-sec-chip:hover {
background: rgba(245, 158, 11, 0.22);
border-color: var(--accent);
}
.notedog-tags-list {
display: flex;
align-items: center;
gap: 4px;
flex-wrap: wrap;
}
.notedog-tag-chip {
font-size: 9px;
padding: 1px 6px;
border-radius: 10px;
background: rgba(255, 255, 255, 0.06);
color: var(--text-muted);
border: 1px solid var(--border);
display: inline-flex;
align-items: center;
gap: 3px;
font-family: var(--font-mono);
}
.notedog-tag-chip .del-tag {
cursor: pointer;
opacity: 0.6;
font-weight: 700;
}
.notedog-tag-chip .del-tag:hover {
opacity: 1;
color: var(--danger);
}
.notedog-att-badge {
position: absolute;
top: -2px;
right: -2px;
font-size: 8px;
font-weight: 700;
background: var(--accent);
color: #121214;
border-radius: 8px;
padding: 0 3px;
min-width: 12px;
height: 12px;
display: inline-flex;
align-items: center;
justify-content: center;
}
.notedog-attachments-tray {
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
padding: 8px;
display: flex;
flex-direction: column;
gap: 6px;
max-height: 200px;
overflow-y: auto;
}
.notedog-att-tray-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.notedog-att-tray-body {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.notedog-att-card {
display: flex;
align-items: center;
gap: 6px;
padding: 4px 6px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
font-size: 10px;
max-width: 240px;
transition: all 0.12s ease;
}
.notedog-att-card:hover {
border-color: var(--accent);
background: var(--bg-hover);
}
.notedog-att-thumb {
width: 28px;
height: 28px;
border-radius: 4px;
object-fit: cover;
background: rgba(0, 0, 0, 0.3);
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
}
.notedog-att-dropzone {
padding: 6px 10px;
border: 1px dashed rgba(245, 158, 11, 0.4);
border-radius: var(--radius);
font-size: 10px;
color: var(--text-dim);
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
cursor: pointer;
background: rgba(245, 158, 11, 0.03);
transition: all 0.15s ease;
}
.notedog-att-dropzone:hover,
.notedog-att-dropzone.dragover {
background: rgba(245, 158, 11, 0.1);
border-color: var(--accent);
color: var(--text-bright);
}
.fs-mode .db-only {
display: none !important;
}
.db-mode .fs-only {
display: none !important;
}
@media (max-width: 1024px) {
.floating-notedog-window,
.floating-editor-window,
.floating-tetradog-window,
.floating-sounddog-window,
.floating-mediaplayer-window,
.floating-chewtoy-window,
.floating-audioplayer-window,
#dynamic-chewtoy-window,
#doc-viewer-modal.floating-mode .doc-viewer-box,
#image-viewer-modal.floating-mode .image-viewer-box,
.doc-viewer-box,
.image-viewer-box,
.bulk-renamer-box,
.diff-modal-box,
.du-modal-box,
.git-modal-box,
.sync-modal-box,
.splitter-modal-box,
.hex-modal-box,
.pdf-studio-modal-box {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100% !important;
height: 100dvh !important;
height: var(--viewport-height, 100dvh) !important;
max-width: 100vw !important;
max-height: 100% !important;
max-height: 100dvh !important;
max-height: var(--viewport-height, 100dvh) !important;
min-width: 0 !important;
min-height: 0 !important;
border-radius: 0 !important;
border: none !important;
box-shadow: none !important;
transform: none !important;
margin: 0 !important;
z-index: 2800 !important;
}
.doc-viewer-header,
.image-viewer-toolbar,
.notedog-header,
.editor-header,
.mediaplayer-header,
.sounddog-header,
.floating-audioplayer-window .audioplayer-header,
.audioplayer-header,
.tetradog-header,
.chewtoy-header,
.calc-header,
.diff-modal-header,
.du-modal-header,
.bulk-renamer-header,
.git-modal-header,
.sync-modal-header,
.splitter-modal-header,
.hex-modal-header,
.pdf-studio-header {
padding-top: max(6px, calc(env(safe-area-inset-top, 0px) + 6px)) !important;
padding-left: max(8px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(8px, env(safe-area-inset-right, 0px)) !important;
box-sizing: border-box !important;
}
.floating-notedog-window .notedog-body {
position: relative !important;
flex: 1 !important;
overflow: hidden !important;
}
.floating-notedog-window .notedog-workspace {
display: flex !important;
width: 100% !important;
min-width: 0 !important;
flex: 1 !important;
}
.floating-notedog-window .notedog-sidebar {
position: absolute !important;
top: 0 !important;
bottom: 0 !important;
left: 0 !important;
height: 100% !important;
width: min(300px, 86vw) !important;
min-width: 0 !important;
max-width: 86vw !important;
z-index: 50 !important;
background: var(--bg-dark) !important;
border-right: 1px solid var(--border) !important;
box-shadow: 12px 0 32px rgba(0, 0, 0, 0.75) !important;
transform: translateX(-100%) !important;
transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important;
will-change: transform;
}
.floating-notedog-window.drawer-open .notedog-sidebar {
transform: translateX(0) !important;
}
.floating-notedog-window.drawer-open .notedog-drawer-backdrop {
display: block !important;
opacity: 1 !important;
pointer-events: auto !important;
}
.win-resize-handle,
.task-win-resize-corner,
.task-win-resize-corner-br {
display: none !important;
}
#btn-doc-viewer-float,
#btn-img-viewer-float {
display: none !important;
}
.notedog-header,
.notedog-header-drag-handle,
.editor-header-drag-handle,
.calc-header-drag-handle,
.mediaplayer-header,
.mediaplayer-header-drag-handle,
.sounddog-header,
.sounddog-header-drag-handle,
.du-modal-header,
.image-viewer-title-group {
cursor: default !important;
}
}
@media (min-width: 601px) and (max-width: 1024px) {
.floating-calculator-window {
position: fixed !important;
top: 50% !important;
left: 50% !important;
right: auto !important;
bottom: auto !important;
transform: translate(-50%, -50%) !important;
width: min(380px, calc(100vw - 32px)) !important;
height: auto !important;
max-height: calc(100dvh - 40px) !important;
border-radius: var(--radius-lg) !important;
border: 1px solid var(--border) !important;
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.75) !important;
z-index: 2800 !important;
}
}
@media (max-width: 600px) {
.chewtoy-brand-text,
.notedog-header-left span span,
.notedog-header-drag-handle span,
.editor-header-left span span,
.editor-header-drag-handle span,
.calc-header-left span span,
.calc-header-drag-handle span,
.du-modal-header span.chewtoy-brand-text,
.diff-modal-header span.diff-header-title {
display: none !important;
}
.chewtoy-brand-icon-only {
display: inline-block !important;
}
.floating-notedog-window {
display: flex;
flex-direction: column;
}
.floating-notedog-window .notedog-header {
padding: 6px 8px !important;
gap: 4px !important;
min-height: 40px;
height: 40px;
}
.floating-notedog-window .notedog-header-center {
flex: 1;
min-width: 50px;
max-width: 160px;
margin: 0 4px !important;
}
.floating-notedog-window .notedog-sidebar {
width: min(300px, 90vw) !important;
max-width: 90vw !important;
}
.notedog-formatting-bar {
overflow-x: auto !important;
flex-wrap: nowrap !important;
padding: 4px 6px !important;
gap: 3px !important;
scrollbar-width: none !important;
-ms-overflow-style: none !important;
-webkit-overflow-scrolling: touch;
}
.notedog-formatting-bar::-webkit-scrollbar {
display: none !important;
}
.notedog-formatting-bar button,
.notedog-formatting-bar .btn {
flex-shrink: 0 !important;
}
.notedog-panes-wrapper.split-mode .notedog-editor-pane {
width: 100% !important;
border-right: none !important;
}
.notedog-panes-wrapper.split-mode .notedog-preview-pane {
display: none !important;
}
.notedog-workspace-header {
padding: 4px 6px !important;
gap: 4px !important;
}
.notedog-note-title-input {
font-size: 13px !important;
min-width: 0 !important;
padding: 2px 4px !important;
}
.floating-calculator-window {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
height: 100dvh !important;
max-width: 100vw !important;
max-height: 100dvh !important;
border-radius: 0 !important;
border: none !important;
box-shadow: none !important;
z-index: 2800 !important;
}
.calc-header {
padding: 6px 10px !important;
min-height: 40px !important;
}
.calc-body {
flex: 1;
overflow-y: auto;
padding: 10px !important;
}
.editor-header {
padding: 6px 8px !important;
gap: 4px !important;
}
.editor-tabs-bar {
overflow-x: auto !important;
flex-wrap: nowrap !important;
scrollbar-width: none !important;
-webkit-overflow-scrolling: touch;
}
.editor-tabs-bar::-webkit-scrollbar {
display: none !important;
}
.doc-viewer-header {
display: flex !important;
flex-direction: column !important;
align-items: stretch !important;
height: auto !important;
min-height: auto !important;
padding-top: max(6px, calc(env(safe-area-inset-top, 0px) + 6px)) !important;
padding-bottom: 8px !important;
padding-left: max(8px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(8px, env(safe-area-inset-right, 0px)) !important;
gap: 6px !important;
cursor: default !important;
}
.doc-viewer-top-row {
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
width: 100% !important;
min-height: 32px !important;
gap: 8px !important;
}
.doc-viewer-title-group {
display: flex !important;
align-items: center !important;
gap: 8px !important;
flex: 1 !important;
min-width: 0 !important;
max-width: none !important;
order: 1 !important;
}
.doc-viewer-title-group #doc-viewer-title {
font-size: 13px !important;
font-weight: 700 !important;
white-space: nowrap !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
}
.doc-viewer-actions-right {
display: flex !important;
align-items: center !important;
gap: 6px !important;
flex-shrink: 0 !important;
order: 2 !important;
}
.doc-viewer-toolbar-center {
display: flex !important;
align-items: center !important;
justify-content: flex-start !important;
gap: 6px !important;
width: 100% !important;
overflow-x: auto !important;
flex-wrap: nowrap !important;
padding-top: 5px !important;
border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
scrollbar-width: none !important;
-webkit-overflow-scrolling: touch !important;
order: 3 !important;
margin-left: 0 !important;
}
.doc-viewer-toolbar-center:empty {
display: none !important;
padding-top: 0 !important;
border-top: none !important;
}
.doc-viewer-toolbar-center::-webkit-scrollbar {
display: none !important;
}
.image-viewer-toolbar {
padding-top: max(6px, calc(env(safe-area-inset-top, 0px) + 6px)) !important;
padding-bottom: 6px !important;
padding-left: max(8px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(8px, env(safe-area-inset-right, 0px)) !important;
gap: 4px !important;
}
#doc-viewer-meta,
#img-viewer-meta {
display: none !important;
}
#tail-follow-label {
display: inline-block;
}
@media (max-width: 480px) {
#tail-follow-label {
display: none !important;
}
}
.du-stats-summary {
grid-template-columns: repeat(2, 1fr) !important;
gap: 6px !important;
padding: 6px 10px !important;
}
.du-stat-card {
padding: 6px 8px !important;
}
.du-top-bar {
padding: 6px 8px !important;
}
}
.pane-ghost-watermark {
display: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
user-select: none;
-webkit-user-select: none;
z-index: 0;
font-family: var(--font-mono), var(--font-main), sans-serif;
font-weight: 900;
font-size: min(44vw, 190px);
line-height: 1;
color: var(--accent);
opacity: 0.055;
text-align: center;
white-space: nowrap;
max-width: 90%;
overflow: hidden;
text-overflow: ellipsis;
letter-spacing: -3px;
text-transform: uppercase;
transition: color 0.2s ease, opacity 0.2s ease;
}
.pane-ghost-watermark.pane-ghost-long {
font-size: min(13vw, 52px);
letter-spacing: 2px;
font-weight: 800;
opacity: 0.048;
}
@keyframes ghostFadeIn {
from { opacity: 0; transform: translate(-50%, -50%) scale(0.92); }
to { opacity: 0.055; transform: translate(-50%, -50%) scale(1); }
}
@media (max-width: 600px) {
.pane-ghost-watermark {
display: flex !important;
align-items: center;
justify-content: center;
}
.pane.active .pane-ghost-watermark {
animation: ghostFadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}
.pane-main-view {
position: relative;
}
.file-table {
position: relative;
z-index: 1;
}
.pull-refresh-indicator {
position: relative;
z-index: 2;
}
}
.pane-docked-tool-container {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
background: var(--bg-panel);
overflow: hidden;
position: relative;
}
.pane-docked-header {
padding: 6px 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
font-weight: 700;
color: var(--accent);
}
.notedog-unlock-card {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--bg-panel);
display: flex;
align-items: center;
justify-content: center;
z-index: 50;
padding: 20px;
}
.notedog-unlock-box {
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 24px 20px;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
max-width: 380px;
width: 100%;
}
.pane-git-badge {
display: inline-flex;
align-items: center;
gap: 3px;
background: rgba(245, 158, 11, 0.12);
border: 1px solid rgba(245, 158, 11, 0.3);
color: var(--accent);
font-size: 9.5px;
font-weight: 600;
padding: 1px 5px;
height: 17px;
line-height: 15px;
border-radius: 4px;
cursor: pointer;
white-space: nowrap;
user-select: none;
transition: all 0.15s ease;
margin-left: 2px;
}
.pane-git-badge:hover {
background: rgba(245, 158, 11, 0.22);
border-color: var(--accent);
}
.git-file-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 10px;
cursor: pointer;
font-size: 11.5px;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
transition: background 0.1s ease;
}
.git-file-row:hover {
background: var(--bg-hover);
}
.git-file-row.active {
background: rgba(245, 158, 11, 0.15);
border-left: 3px solid var(--accent);
}
.git-status-char {
font-weight: 800;
font-family: var(--font-mono);
font-size: 11px;
width: 16px;
text-align: center;
display: inline-block;
}
.git-status-char.staged { color: #22c55e; }
.git-status-char.modified { color: #f59e0b; }
.git-status-char.untracked { color: #38bdf8; }
.git-status-char.deleted { color: #ef4444; }
.diff-line-add {
background: rgba(34, 197, 94, 0.15);
color: #4ade80;
display: block;
}
.diff-line-del {
background: rgba(239, 68, 68, 0.15);
color: #f87171;
display: block;
}
.diff-line-hdr {
background: rgba(56, 189, 248, 0.15);
color: #38bdf8;
font-weight: 700;
display: block;
}
.theme-swatch-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
gap: 10px;
margin-top: 8px;
max-height: 220px;
overflow-y: auto;
padding: 4px;
}
.theme-swatch-card {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 6px;
padding: 8px;
cursor: pointer;
display: flex;
flex-direction: column;
gap: 6px;
transition: all 0.18s ease;
user-select: none;
}
.theme-swatch-card:hover {
transform: translateY(-2px);
border-color: var(--accent);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}
.theme-swatch-card.active {
border-color: var(--accent);
box-shadow: 0 0 0 2px var(--accent);
background: var(--bg-active);
}
.theme-swatch-name {
font-size: 11px;
font-weight: 600;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.theme-swatch-preview {
display: flex;
gap: 4px;
align-items: center;
}
.theme-swatch-dot {
width: 14px;
height: 14px;
border-radius: 50%;
border: 1px solid rgba(255, 255, 255, 0.15);
flex-shrink: 0;
}
.tree-view-sidebar {
width: var(--tree-sidebar-width, 260px);
min-width: 180px;
max-width: 600px;
background: var(--bg-panel);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
overflow: hidden;
flex-shrink: 0;
user-select: none;
z-index: 10;
animation: slideInTree 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes slideInTree {
from { width: 0; opacity: 0; }
to { width: var(--tree-sidebar-width, 260px); opacity: 1; }
}
.tree-sidebar-header {
height: 34px;
padding: 0 10px;
display: flex;
align-items: center;
justify-content: space-between;
background: var(--bg-secondary);
border-bottom: 1px solid var(--border);
font-size: 11.5px;
font-weight: 600;
}
.tree-sidebar-title {
display: flex;
align-items: center;
gap: 6px;
color: var(--text-main);
}
.tree-sidebar-actions {
display: flex;
align-items: center;
gap: 4px;
}
.tree-view-content {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
padding: 6px 4px;
font-family: var(--font-main);
}
.tree-node-row {
display: flex;
align-items: center;
padding: 3px 6px;
border-radius: 4px;
cursor: pointer;
gap: 4px;
font-size: 12px;
color: var(--text-main);
transition: background 0.1s ease;
white-space: nowrap;
}
.tree-node-row:hover {
background: var(--bg-hover);
}
.tree-node-row.active {
background: var(--bg-active);
color: var(--accent);
font-weight: 600;
}
.tree-toggle {
display: inline-flex;
align-items: center;
justify-content: center;
width: 16px;
height: 16px;
font-size: 8.5px;
color: var(--text-muted);
border-radius: 3px;
cursor: pointer;
flex-shrink: 0;
transition: transform 0.12s ease;
}
.tree-toggle:hover {
background: rgba(255, 255, 255, 0.1);
color: var(--text-main);
}
.tree-toggle.expanded {
transform: rotate(90deg);
}
.tree-icon {
font-size: 13px;
flex-shrink: 0;
margin-right: 2px;
display: inline-flex;
align-items: center;
}
.tree-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
}
.tree-children {
padding-left: 14px;
border-left: 1px dashed var(--border);
margin-left: 8px;
display: flex;
flex-direction: column;
gap: 1px;
}
.tree-resizer-handle {
width: 4px;
cursor: col-resize;
background: transparent;
transition: background 0.15s ease;
flex-shrink: 0;
z-index: 11;
}
.tree-resizer-handle:hover,
.tree-resizer-handle.resizing {
background: var(--accent);
}
.crumb.crumb-root {
font-weight: 600;
display: inline-flex;
align-items: center;
gap: 3px;
cursor: pointer;
}
.crumb-sep-dropdown {
cursor: pointer;
padding: 0 2px;
margin: 0 1px;
border-radius: 2px;
color: var(--text-dim);
display: inline-flex;
align-items: center;
transition: all 0.1s ease;
user-select: none;
}
.crumb-sep-dropdown:hover {
background: var(--bg-hover);
color: var(--accent);
}
.template-card {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 14px;
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border);
border-radius: 6px;
transition: all 0.15s ease;
}
.template-card:hover {
background: rgba(255, 255, 255, 0.05);
border-color: rgba(245, 158, 11, 0.4);
}
.template-badge {
font-size: 9.5px;
font-weight: 700;
padding: 1px 6px;
border-radius: 4px;
text-transform: uppercase;
letter-spacing: 0.3px;
}
.template-badge.builtin {
background: rgba(245, 158, 11, 0.12);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.3);
}
.template-badge.custom {
background: rgba(56, 189, 248, 0.12);
color: #38bdf8;
border: 1px solid rgba(56, 189, 248, 0.3);
}
.var-chip {
cursor: pointer;
background: var(--bg-dark);
border: 1px solid var(--border);
padding: 2px 7px;
border-radius: 4px;
font-family: var(--font-mono);
font-size: 10.5px;
color: var(--text-main);
transition: all 0.12s ease;
user-select: none;
}
.var-chip:hover {
border-color: var(--accent);
color: var(--accent);
background: rgba(245, 158, 11, 0.08);
}
.breadcrumb-popover {
position: fixed;
z-index: 3500;
background: var(--bg-panel);
border: 1px solid var(--border);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
border-radius: 6px;
padding: 4px;
min-width: 220px;
max-width: 420px;
max-height: min(680px, calc(85vh - 50px));
overflow-y: auto;
font-family: var(--font-main);
font-size: 11.5px;
animation: fadeInFast 0.12s ease;
}
.breadcrumb-popover-item {
display: flex;
align-items: center;
gap: 6px;
padding: 5px 8px;
border-radius: 4px;
cursor: pointer;
color: var(--text-main);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
transition: background 0.08s ease;
}
.breadcrumb-popover-item:hover {
background: var(--bg-hover);
color: var(--accent);
}
.breadcrumb-popover-item.active {
background: var(--bg-active);
color: var(--accent);
font-weight: 600;
}
.breadcrumb-popover-header {
font-size: 10px;
font-weight: 700;
color: var(--text-muted);
text-transform: uppercase;
padding: 5px 8px 3px;
letter-spacing: 0.5px;
border-bottom: 1px solid var(--border);
margin-bottom: 3px;
}
.image-viewer-viewport {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
position: relative;
user-select: none;
}
.image-viewer-img {
max-width: 92%;
max-height: 85vh;
object-fit: contain;
transition: transform 0.06s ease-out, opacity 0.12s ease-in-out;
transform-origin: center center;
pointer-events: auto;
}
.image-viewer-img.loading {
opacity: 0.55;
}
.file-table th {
position: relative;
user-select: none;
overflow: visible !important;
}
.file-table th > span {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
pointer-events: none;
}
.col-resizer {
position: absolute;
right: -8px;
top: 0;
bottom: 0;
width: 16px;
cursor: col-resize;
z-index: 50;
touch-action: none !important;
user-select: none;
-webkit-user-select: none;
display: flex;
align-items: center;
justify-content: center;
}
.col-resizer::before {
content: '';
width: 2px;
height: 100%;
background: transparent;
transition: background 0.15s ease, box-shadow 0.15s ease;
}
.col-resizer:hover::before,
.col-resizer:active::before,
.col-resizer.is-resizing::before {
background: var(--accent);
box-shadow: 0 0 6px var(--accent);
}
@media (pointer: coarse), (max-width: 1024px) {
.col-resizer {
width: 34px !important;
right: -17px !important;
touch-action: none !important;
z-index: 60 !important;
}
}
body.is-col-resizing {
cursor: col-resize !important;
user-select: none !important;
}
.grid-gallery-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
gap: 12px;
padding: 14px;
overflow-y: auto;
align-content: start;
height: 100%;
box-sizing: border-box;
}
.grid-gallery-card {
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
padding: 10px 8px 8px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 6px;
cursor: pointer;
user-select: none;
transition: transform 0.1s ease, border-color 0.12s ease, box-shadow 0.12s ease, background 0.1s ease;
position: relative;
min-height: 120px;
}
.grid-gallery-card:hover {
background: var(--bg-hover);
border-color: var(--accent);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}
.grid-gallery-card.selected {
background: rgba(245, 158, 11, 0.18) !important;
border-color: var(--accent) !important;
box-shadow: 0 0 0 1px var(--accent), 0 4px 12px rgba(0, 0, 0, 0.4) !important;
}
.grid-gallery-card.cursor-focus {
outline: 2px solid var(--accent);
outline-offset: 1px;
}
.grid-thumb-wrapper {
width: 80px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 6px;
overflow: hidden;
border-radius: 4px;
}
.grid-thumb-img {
max-width: 100%;
max-height: 100%;
object-fit: cover;
border-radius: 4px;
}
.grid-icon-svg {
width: 44px;
height: 44px;
stroke-width: 1.5;
}
.grid-card-name {
font-size: 11.5px;
font-weight: 500;
text-align: center;
color: var(--text-main);
word-break: break-word;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
line-height: 1.3;
width: 100%;
}
.grid-card-meta {
font-size: 10px;
color: var(--text-muted);
margin-top: 4px;
text-align: center;
font-family: var(--font-mono, monospace);
}
.compact-list-container {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-content: flex-start;
gap: 2px 14px;
padding: 8px 12px;
overflow-x: auto;
overflow-y: hidden;
height: 100%;
box-sizing: border-box;
}
.compact-list-item {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 8px;
border-radius: 4px;
cursor: pointer;
user-select: none;
font-size: 12px;
width: 220px;
box-sizing: border-box;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition: background 0.08s ease;
}
.compact-list-item:hover {
background: var(--bg-hover);
color: var(--accent);
}
.compact-list-item.selected {
background: rgba(245, 158, 11, 0.22) !important;
color: var(--accent) !important;
font-weight: 600;
}
.compact-list-item.cursor-focus {
outline: 1px dashed var(--accent);
}
.rule-config-row {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 10px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 6px;
margin-bottom: 6px;
}
.rule-config-row:hover {
border-color: var(--accent);
}
.rule-pill {
font-size: 10.5px;
background: rgba(255, 255, 255, 0.07);
padding: 2px 6px;
border-radius: 4px;
font-family: var(--font-mono, monospace);
color: var(--text-muted);
}
.color-dot-mini {
width: 11px;
height: 11px;
border-radius: 50%;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 8px;
line-height: 1;
transition: transform 0.1s ease, box-shadow 0.1s ease;
border: 1px solid rgba(255, 255, 255, 0.2);
}
.color-dot-mini:hover {
transform: scale(1.3);
box-shadow: 0 0 5px rgba(255, 255, 255, 0.7);
}
.color-dot-mini.color-none {
background: transparent;
color: var(--text-muted);
border: 1px dashed var(--text-muted);
font-size: 8px;
font-weight: bold;
}
.properties-table tr {
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.properties-table td {
padding: 5px 0;
}
.col-chooser-popover {
position: fixed;
z-index: 2500;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
min-width: 230px;
max-height: min(720px, calc(88vh - 40px));
overflow-y: auto;
padding: 6px 0;
display: flex;
flex-direction: column;
animation: fadeIn 0.12s ease-out;
}
.col-chooser-title {
font-size: 11px;
font-weight: 700;
color: var(--accent);
text-transform: uppercase;
padding: 6px 12px;
letter-spacing: 0.5px;
border-bottom: 1px solid var(--border);
}
.col-chooser-item {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 12px;
font-size: 12px;
color: var(--text-main);
cursor: pointer;
user-select: none;
transition: background 0.1s ease;
}
.col-chooser-item:hover {
background: var(--bg-hover);
color: var(--accent);
}
.col-chooser-item input[type="checkbox"] {
cursor: pointer;
accent-color: var(--accent);
}
.col-chooser-action-btn {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 12px;
font-size: 11.5px;
color: var(--text-muted);
cursor: pointer;
transition: background 0.1s ease, color 0.1s ease;
}
.col-chooser-action-btn:hover {
background: var(--bg-hover);
color: var(--accent);
}
.grid-gallery-container.size-sm {
grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
gap: 8px;
padding: 8px;
}
.grid-gallery-container.size-sm .grid-gallery-card {
min-height: 90px;
padding: 6px 4px;
}
.grid-gallery-container.size-sm .grid-thumb-wrapper {
width: 50px;
height: 50px;
}
.grid-gallery-container.size-sm .grid-thumb-wrapper img {
max-width: 44px;
max-height: 44px;
}
.grid-gallery-container.size-sm .grid-icon-svg {
width: 28px;
height: 28px;
}
.grid-gallery-container.size-md {
grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
gap: 12px;
padding: 12px;
}
.grid-gallery-container.size-lg {
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 16px;
padding: 16px;
}
.grid-gallery-container.size-lg .grid-gallery-card {
min-height: 170px;
padding: 12px 10px;
}
.grid-gallery-container.size-lg .grid-thumb-wrapper {
width: 120px;
height: 120px;
}
.grid-gallery-container.size-lg .grid-icon-svg {
width: 64px;
height: 64px;
}
.grid-gallery-container.size-xl {
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 20px;
padding: 20px;
}
.grid-gallery-container.size-xl .grid-gallery-card {
min-height: 230px;
padding: 16px 12px;
}
.grid-gallery-container.size-xl .grid-thumb-wrapper {
width: 180px;
height: 180px;
}
.grid-gallery-container.size-xl .grid-icon-svg {
width: 84px;
height: 84px;
}
.pane-split-wrapper {
display: flex;
flex: 1;
height: 100%;
width: 100%;
overflow: hidden;
position: relative;
min-height: 0;
min-width: 0;
}
.pane-tree-sidebar {
width: 210px;
min-width: 120px;
max-width: 400px;
height: 100%;
background: rgba(0, 0, 0, 0.22);
border-right: 1px solid var(--border);
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
touch-action: pan-y;
padding: 6px 4px;
box-sizing: border-box;
display: flex;
flex-direction: column;
flex-shrink: 0;
user-select: none;
-webkit-user-select: none;
}
.pane-tree-resizer {
width: 4px;
cursor: col-resize;
background: transparent;
transition: background 0.15s ease;
position: relative;
z-index: 10;
flex-shrink: 0;
}
.pane-tree-resizer:hover,
.pane-tree-resizer.is-resizing {
background: var(--accent);
}
.pane-main-view {
flex: 1;
height: 100%;
width: 100%;
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
touch-action: pan-y;
position: relative;
min-height: 0;
min-width: 0;
}
.tree-node-row {
display: flex;
align-items: center;
gap: 4px;
padding: 3px 6px;
border-radius: 4px;
cursor: pointer;
font-size: 11.5px;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition: background 0.08s ease, color 0.08s ease;
}
.tree-node-row:hover {
background: var(--bg-hover);
color: var(--accent);
}
.tree-node-row.active {
background: rgba(245, 158, 11, 0.2) !important;
color: var(--accent) !important;
font-weight: 700;
}
.tree-expander {
width: 14px;
height: 14px;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: var(--text-muted);
flex-shrink: 0;
transition: transform 0.12s ease;
}
.tree-expander.expanded {
transform: rotate(90deg);
}
.tree-node-icon {
width: 14px;
height: 14px;
flex-shrink: 0;
}
.tree-node-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
}
.tree-node-children {
padding-left: 12px;
display: none;
}
.tree-node-children.expanded {
display: block;
}
html.auth-pending-login #login-modal,
html.auth-pending-lock #session-lock-screen {
display: flex !important;
}
html.auth-pending-login .app-header,
html.auth-pending-login .fkey-bar,
html.auth-pending-login .app-main-layout,
html.auth-pending-login .mobile-bottom-bar,
html.auth-pending-login .floating-window,
html.auth-pending-login .panes-container,
html.auth-pending-lock .app-header,
html.auth-pending-lock .fkey-bar,
html.auth-pending-lock .app-main-layout,
html.auth-pending-lock .mobile-bottom-bar,
html.auth-pending-lock .floating-window,
html.auth-pending-lock .panes-container,
html.auth-verifying .app-header,
html.auth-verifying .fkey-bar,
html.auth-verifying .app-main-layout,
html.auth-verifying .mobile-bottom-bar,
html.auth-verifying .floating-window,
html.auth-verifying .panes-container {
visibility: hidden !important;
opacity: 0 !important;
pointer-events: none !important;
}
html.auth-verifying::before {
content: '';
position: fixed;
inset: 0;
z-index: 99998;
background-color: #101014;
background-image:
radial-gradient(ellipse 70% 55% at 50% 50%, rgba(245, 158, 11, 0.12) 0%, rgba(217, 119, 6, 0.06) 50%, transparent 75%),
linear-gradient(140deg, #0a0a0d 0%, #121217 45%, #151310 100%);
}
html.auth-ready .app-header,
html.auth-ready .fkey-bar,
html.auth-ready .app-main-layout,
html.auth-ready .mobile-bottom-bar,
html.auth-ready .floating-window,
html.auth-ready .panes-container {
visibility: visible !important;
opacity: 1 !important;
transition: opacity 0.12s ease;
}
#login-modal.login-screen-overlay {
--bg-main: #101014;
--bg-body: #101014;
--bg-panel: #16161c;
--bg-hover: rgba(255, 255, 255, 0.08);
--text-main: #f4f4f5;
--text-muted: #a1a1aa;
--text-dim: #71717a;
--border: rgba(255, 255, 255, 0.12);
--accent: #f59e0b;
--accent-hover: #fbbf24;
color: #f4f4f5;
color-scheme: dark;
position: fixed;
inset: 0;
z-index: 99999;
display: none;
align-items: center;
justify-content: flex-start;
padding: 40px 24px 40px max(48px, 12vw);
background-color: #101014;
background-image:
radial-gradient(ellipse 70% 55% at 50% 50%, rgba(245, 158, 11, 0.15) 0%, rgba(217, 119, 6, 0.08) 50%, transparent 75%),
radial-gradient(ellipse 80% 60% at 15% 15%, rgba(245, 158, 11, 0.10) 0%, transparent 65%),
radial-gradient(ellipse 75% 55% at 85% 85%, rgba(217, 119, 6, 0.08) 0%, transparent 65%),
linear-gradient(140deg, #0a0a0d 0%, #121217 45%, #151310 100%);
overflow: hidden;
}
#login-modal.login-screen-overlay.active {
display: flex !important;
}
.login-corner-brand {
display: none;
position: absolute;
top: 24px;
left: 28px;
align-items: center;
gap: 12px;
user-select: none;
z-index: 10;
transition: opacity 0.2s ease;
}
.login-corner-logo {
height: 34px;
width: auto;
object-fit: contain;
filter: drop-shadow(0 2px 10px rgba(245, 158, 11, 0.35));
}
.login-corner-name {
font-size: 15px;
font-weight: 700;
letter-spacing: 0.5px;
color: var(--text-main, #f4f4f5);
}
.auth-text-pc {
display: inline;
}
.auth-text-mobile {
display: none;
}
.auth-stealth-link {
color: inherit !important;
text-decoration: none !important;
cursor: inherit !important;
font-weight: 700;
border: none !important;
outline: none !important;
}
.auth-stealth-link:hover,
.auth-stealth-link:focus,
.auth-stealth-link:active {
color: inherit !important;
text-decoration: none !important;
cursor: inherit !important;
}
.lock-hostname-suffix {
font-weight: 400;
color: var(--text-muted, #a1a1aa);
margin-left: 2px;
font-size: 0.92em;
}
.login-corner-version {
position: absolute;
bottom: 24px;
right: 28px;
display: flex;
align-items: center;
user-select: none;
z-index: 10;
}
.login-version-badge,
.lock-version-badge {
font-size: 11px;
font-family: var(--font-mono, monospace);
font-weight: 600;
color: var(--accent, #f59e0b);
background: rgba(245, 158, 11, 0.14);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
border: 1px solid rgba(245, 158, 11, 0.3);
padding: 3px 9px;
border-radius: 12px;
letter-spacing: 0.4px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), inset 0 1px 1px rgba(255, 255, 255, 0.1);
}
.auth-watermark-backdrop {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
user-select: none;
z-index: 5;
overflow: hidden;
isolation: isolate;
background: transparent !important;
}
.auth-watermark-img {
width: min(720px, 85vw);
height: min(720px, 85vh);
max-width: 90%;
max-height: 90%;
object-fit: contain;
opacity: 0.85;
filter: drop-shadow(0 0 45px rgba(245, 158, 11, 0.45));
transform-origin: center center;
transform: translate3d(0, 0, 0) scale(0.98);
-webkit-transform: translate3d(0, 0, 0) scale(0.98);
will-change: transform, opacity;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
background: transparent !important;
animation: authWatermarkFloat 10s ease-in-out infinite alternate;
}
@keyframes authWatermarkFloat {
0% {
transform: translate3d(0, 0, 0) scale(0.98);
opacity: 0.80;
}
100% {
transform: translate3d(0, -8px, 0) scale(1.02);
opacity: 0.90;
}
}
@media (max-width: 1024px) {
#login-modal.login-screen-overlay,
.session-lock-screen {
justify-content: center;
padding: 24px;
}
.login-corner-brand {
display: flex !important;
}
.auth-watermark-backdrop {
display: none !important;
}
.auth-text-pc {
display: none !important;
}
.auth-text-mobile {
display: inline !important;
}
.login-card,
.lock-screen-card {
max-width: min(390px, 100%);
}
}
@media (max-width: 600px) {
.login-corner-brand {
top: 16px;
left: 16px;
}
.login-corner-version {
bottom: 16px;
right: 16px;
}
.login-card,
.lock-screen-card {
max-width: 100%;
}
}
.login-card {
width: 100%;
max-width: 385px;
background: rgba(16, 17, 22, 0.42);
backdrop-filter: blur(18px) saturate(180%);
-webkit-backdrop-filter: blur(18px) saturate(180%);
border: 1px solid rgba(245, 158, 11, 0.38);
border-radius: 14px;
box-shadow:
0 24px 60px rgba(0, 0, 0, 0.65),
0 0 40px rgba(245, 158, 11, 0.15),
inset 0 1px 1px rgba(255, 255, 255, 0.22),
inset 0 -1px 1px rgba(0, 0, 0, 0.4);
overflow: hidden;
position: relative;
z-index: 20;
animation: loginCardPop 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes loginCardPop {
0% { transform: scale(0.94) translateY(12px); opacity: 0; }
100% { transform: scale(1) translateY(0); opacity: 1; }
}
.login-card-header {
padding: 24px 24px 18px;
display: flex;
align-items: center;
gap: 14px;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
background: linear-gradient(180deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.01) 100%);
}
.login-brand-icon {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
background: transparent;
border: none;
box-shadow: none;
padding: 0;
}
.login-brand-img {
height: 34px;
width: auto;
object-fit: contain;
filter: drop-shadow(0 2px 10px rgba(245, 158, 11, 0.45));
}
.login-header-text {
flex: 1;
min-width: 0;
}
.login-title {
font-size: 16px;
font-weight: 700;
color: var(--text-main, #f4f4f5);
line-height: 1.3;
margin: 0;
}
.login-subtitle {
font-size: 11.5px;
color: var(--text-muted, #a1a1aa);
margin-top: 2px;
line-height: 1.3;
}
.login-card-body {
padding: 20px 24px 12px;
}
.login-form-group {
margin-bottom: 16px;
}
.login-label {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 600;
color: var(--text-main, #f4f4f5);
margin-bottom: 7px;
user-select: none;
}
.login-label-icon {
width: 13px;
height: 13px;
color: var(--accent, #f59e0b);
}
.login-input-wrapper {
position: relative;
width: 100%;
}
.login-input {
width: 100%;
padding: 9px 12px;
font-size: 13px;
color: var(--text-main, #f4f4f5);
background-color: rgba(10, 10, 14, 0.45);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.14);
border-radius: 7px;
box-sizing: border-box;
outline: none;
transition: all 0.18s ease;
user-select: text;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3);
}
.login-input::placeholder {
color: rgba(161, 161, 170, 0.65);
font-size: 12px;
}
.login-input:hover {
border-color: rgba(255, 255, 255, 0.26);
background-color: rgba(14, 14, 20, 0.58);
}
.login-input:focus {
border-color: var(--accent, #f59e0b);
background-color: rgba(16, 16, 22, 0.75);
box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.28), inset 0 1px 2px rgba(0, 0, 0, 0.2);
}
.login-error-msg {
background: rgba(239, 68, 68, 0.14);
border: 1px solid rgba(239, 68, 68, 0.35);
color: #f87171;
font-size: 11.5px;
padding: 8px 12px;
border-radius: 6px;
margin-bottom: 14px;
line-height: 1.4;
}
.login-card-footer {
padding: 12px 24px 22px;
display: flex;
justify-content: flex-start;
align-items: center;
gap: 10px;
}
.login-submit-btn {
padding: 7px 18px;
font-size: 12.5px;
font-weight: 600;
border-radius: 6px;
display: inline-flex;
align-items: center;
gap: 6px;
cursor: pointer;
background-color: var(--accent, #f59e0b);
color: #121214;
border: 1px solid var(--accent, #f59e0b);
transition: all 0.15s ease;
}
.login-submit-btn:hover {
background-color: var(--accent-hover, #fbbf24);
border-color: var(--accent-hover, #fbbf24);
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.35);
transform: translateY(-1px);
}
.login-submit-btn:active {
transform: translateY(0);
}
.login-sso-section {
width: 100%;
margin-top: 6px;
padding: 0 20px 20px 20px;
box-sizing: border-box;
}
.login-divider {
display: flex;
align-items: center;
text-align: center;
margin: 10px 0 12px 0;
color: var(--text-dim, #71717a);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.login-divider::before,
.login-divider::after {
content: '';
flex: 1;
border-bottom: 1px solid var(--border, #3f3f46);
}
.login-divider span {
padding: 0 10px;
}
.btn-sso {
width: 100%;
padding: 8px 16px;
font-size: 12.5px;
font-weight: 500;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
cursor: pointer;
background: var(--bg-hover, #27272a);
color: var(--text-main, #f4f4f5);
border: 1px solid var(--border, #3f3f46);
transition: all 0.15s ease;
box-sizing: border-box;
}
.btn-sso:hover {
background: var(--bg-active, #323238);
border-color: var(--accent, #f59e0b);
color: var(--accent, #f59e0b);
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.15);
transform: translateY(-1px);
}
.btn-sso:active {
transform: translateY(0);
}
.file-icon-custom-glyph {
display: inline-flex;
align-items: center;
justify-content: center;
font-family: 'JetBrainsMono Nerd Font', 'JetBrainsMono Nerd Font Mono', var(--font-mono), 'JetBrains Mono', 'Fira Code', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', monospace, sans-serif;
line-height: 1;
font-style: normal;
text-align: center;
flex-shrink: 0;
user-select: none;
vertical-align: middle;
}
.file-icon-custom-glyph.icon-sm {
font-size: 15px;
width: 17px;
height: 17px;
}
.file-icon-custom-glyph.icon-md {
font-size: 22px;
width: 26px;
height: 26px;
}
.file-icon-custom-glyph.icon-lg {
font-size: 44px;
width: 48px;
height: 48px;
}
.icon-preset-chip {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 4px 8px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 4px;
font-size: 11px;
cursor: pointer;
transition: all 0.12s ease;
user-select: none;
font-family: var(--font-mono), sans-serif;
}
.icon-preset-chip:hover {
background: var(--bg-hover);
border-color: var(--accent);
color: var(--accent-hover);
transform: translateY(-1px);
}
.icon-preset-chip.active {
background: rgba(245, 158, 11, 0.18);
border-color: var(--accent);
color: var(--accent);
font-weight: 700;
}
.icon-btn-chip {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 6px;
font-size: 15px;
cursor: pointer;
transition: all 0.12s ease;
user-select: none;
font-family: var(--font-mono), 'Apple Color Emoji', 'Segoe UI Emoji', sans-serif;
}
.icon-btn-chip:hover {
background: var(--bg-hover);
border-color: var(--accent);
transform: scale(1.15);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
.icon-btn-chip.active {
background: rgba(245, 158, 11, 0.22);
border-color: var(--accent);
box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.3);
}
body:not(.standalone-mode) .desktop-only-setting,
body:not(.standalone-mode) .standalone-only {
display: none !important;
}
body.standalone-mode .web-only-setting,
body.standalone-mode .server-only-setting {
display: none !important;
}
.ext-preset-btn {
font-size: 10px;
padding: 3px 8px;
border-radius: 4px;
background: var(--bg-hover);
border: 1px solid var(--border);
color: var(--text-muted);
cursor: pointer;
transition: all 0.15s ease;
user-select: none;
}
.ext-preset-btn:hover {
background: rgba(245, 158, 11, 0.15);
border-color: var(--accent);
color: var(--accent);
transform: translateY(-1px);
}
.ext-preset-btn:active {
transform: translateY(0);
}
.floating-tetradog-window {
position: fixed;
top: 70px;
right: 50px;
width: 520px;
height: 640px;
min-width: 440px;
min-height: 520px;
max-width: calc(100vw - 20px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2850;
overflow: hidden;
user-select: none;
font-family: var(--font-sans), sans-serif;
transition: width 0.15s ease, height 0.15s ease;
}
.floating-tetradog-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.tetradog-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
}
.tetradog-header:active {
cursor: grabbing;
}
.tetradog-mode-banner {
width: 100%;
display: flex;
justify-content: center;
margin-bottom: 6px;
}
.tetradog-mode-badge {
font-family: var(--font-mono);
font-size: 9.5px;
font-weight: 800;
padding: 2px 8px;
border-radius: 4px;
background: rgba(245, 158, 11, 0.15);
color: var(--accent);
border: 1px solid rgba(245, 158, 11, 0.35);
letter-spacing: 0.8px;
box-shadow: 0 0 8px rgba(245, 158, 11, 0.15);
}
.tetradog-score-pill {
display: inline-flex;
align-items: center;
gap: 5px;
background: rgba(0, 0, 0, 0.4);
padding: 2px 8px;
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 0.06);
font-family: var(--font-mono);
font-size: 11px;
}
.tetradog-pill-label {
font-size: 9px;
font-weight: 700;
color: var(--text-dim);
}
.tetradog-pill-val {
font-weight: 700;
color: var(--accent);
}
.tetradog-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
background: #090a0f;
position: relative;
}
.tetradog-view {
flex: 1;
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
.tetradog-arena {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 8px 12px;
gap: 12px;
overflow: hidden;
}
.tetradog-side-col {
display: flex;
flex-direction: column;
gap: 10px;
width: 110px;
flex-shrink: 0;
}
.tetradog-panel-card {
background: rgba(18, 20, 26, 0.85);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 8px;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}
.tetradog-card-title {
font-size: 10px;
font-weight: 700;
color: var(--text-dim);
letter-spacing: 0.5px;
margin-bottom: 6px;
text-align: center;
width: 100%;
}
.tetradog-key-hint {
font-size: 8px;
color: var(--text-muted);
font-weight: normal;
display: block;
}
.tetradog-canvas-wrap {
display: flex;
align-items: center;
justify-content: center;
background: #050608;
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 0.05);
padding: 2px;
}
.tetradog-stat-row {
width: 100%;
display: flex;
flex-direction: column;
gap: 2px;
margin-bottom: 6px;
}
.tetradog-stat-row:last-child {
margin-bottom: 0;
}
.tetradog-stat-label {
font-size: 9px;
font-weight: 700;
color: var(--text-dim);
}
.tetradog-stat-number {
font-family: var(--font-mono);
font-size: 13px;
font-weight: 700;
color: var(--text-main);
}
.tetradog-glow-gold {
color: #fbbf24 !important;
text-shadow: 0 0 8px rgba(251, 191, 36, 0.4);
}
.tetradog-select {
width: 100%;
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-main);
border-radius: 4px;
font-size: 10px;
padding: 3px 4px;
outline: none;
font-family: var(--font-sans);
}
.tetradog-b2b-badge,
.tetradog-combo-badge {
padding: 4px 8px;
border-radius: 4px;
font-size: 10px;
font-weight: 800;
text-align: center;
animation: tetradogPulse 1.2s infinite alternate ease-in-out;
}
.tetradog-b2b-badge {
background: rgba(245, 158, 11, 0.2);
color: #fbbf24;
border: 1px solid rgba(245, 158, 11, 0.4);
}
.tetradog-combo-badge {
background: rgba(59, 130, 246, 0.2);
color: #60a5fa;
border: 1px solid rgba(59, 130, 246, 0.4);
}
@keyframes tetradogPulse {
from { transform: scale(0.97); opacity: 0.85; }
to { transform: scale(1.03); opacity: 1; }
}
.tetradog-center-col {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
flex-shrink: 0;
position: relative;
}
.tetradog-canvas-container {
position: relative;
background: #040507;
border: 2px solid rgba(245, 158, 11, 0.3);
border-radius: 6px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6), 0 0 16px rgba(245, 158, 11, 0.12);
overflow: hidden;
}
.tetradog-main-canvas {
display: block;
image-rendering: pixelated;
image-rendering: crisp-edges;
}
.tetradog-scanlines {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
background-size: 100% 4px;
pointer-events: none;
opacity: 0.6;
}
.tetradog-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(4, 5, 8, 0.88);
backdrop-filter: blur(4px);
display: flex;
align-items: center;
justify-content: center;
padding: 16px;
z-index: 10;
animation: fadeIn 0.15s ease-out;
}
.tetradog-overlay-box {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
width: 100%;
}
.tetradog-arcade-logo {
font-family: var(--font-mono);
font-size: 24px;
font-weight: 900;
letter-spacing: 2px;
color: var(--accent);
text-shadow: 0 0 12px rgba(245, 158, 11, 0.6);
margin-bottom: 2px;
}
.tetradog-arcade-sub {
font-size: 8px;
letter-spacing: 1px;
color: var(--text-dim);
margin-bottom: 16px;
}
.tetradog-key-legend {
margin-top: 14px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4px 10px;
font-size: 9.5px;
color: var(--text-dim);
text-align: left;
background: rgba(0, 0, 0, 0.4);
padding: 8px 10px;
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 0.05);
}
.tetradog-key-legend kbd {
background: #181b22;
border: 1px solid #30363d;
border-radius: 3px;
padding: 1px 4px;
font-family: var(--font-mono);
font-size: 9px;
color: var(--accent);
}
.tetradog-overlay-title {
font-family: var(--font-mono);
font-size: 20px;
font-weight: 800;
letter-spacing: 1.5px;
color: var(--text-main);
margin-bottom: 8px;
}
.tetradog-danger-glow {
color: #ef4444 !important;
text-shadow: 0 0 12px rgba(239, 68, 68, 0.6);
}
.tetradog-accent-glow {
color: var(--accent) !important;
text-shadow: 0 0 10px rgba(245, 158, 11, 0.5);
}
.tetradog-go-stats {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
width: 100%;
margin: 10px 0;
background: rgba(0, 0, 0, 0.35);
padding: 10px;
border-radius: 6px;
border: 1px solid rgba(255, 255, 255, 0.05);
}
.tetradog-go-label {
font-size: 9px;
font-weight: 700;
color: var(--text-dim);
}
.tetradog-go-val {
font-family: var(--font-mono);
font-size: 15px;
font-weight: 800;
color: #f1f5f9;
}
.tetradog-rank-banner {
padding: 6px 12px;
background: rgba(245, 158, 11, 0.18);
border: 1px solid var(--accent);
border-radius: 6px;
color: var(--accent);
font-weight: 700;
font-size: 12px;
margin-top: 6px;
width: 100%;
text-align: center;
box-shadow: 0 0 12px rgba(245, 158, 11, 0.25);
}
.tetradog-mobile-center-hud {
display: none;
align-items: center;
justify-content: space-between;
width: 100%;
max-width: 220px;
padding: 2px 6px;
margin-bottom: 4px;
background: rgba(18, 20, 26, 0.7);
border: 1px solid var(--border);
border-radius: var(--radius);
box-sizing: border-box;
}
.tetradog-mob-stat-row {
display: flex;
align-items: center;
gap: 4px;
font-family: var(--font-mono);
}
.tetradog-mob-stat-lbl {
font-size: 8px;
font-weight: 700;
color: var(--text-dim);
}
.tetradog-mob-stat-val {
font-size: 11px;
font-weight: 800;
}
.desktop-only-card {
display: flex;
}
.mobile-only-flex {
display: none;
}
.tetradog-nes-controller {
display: none;
width: 100%;
padding: 6px 12px 8px 12px;
background: rgba(10, 12, 17, 0.95);
border-top: 1px solid var(--border);
align-items: center;
justify-content: space-between;
box-sizing: border-box;
flex-shrink: 0;
user-select: none;
touch-action: manipulation;
z-index: 10;
}
.tetradog-dpad-cross {
display: grid;
grid-template-columns: 38px 38px 38px;
grid-template-rows: 38px 38px 38px;
width: 114px;
height: 114px;
position: relative;
filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.5));
}
.dpad-btn {
background: #1e222d;
border: 1px solid rgba(255, 255, 255, 0.12);
color: #cbd5e1;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
user-select: none;
touch-action: manipulation;
padding: 0;
transition: background 0.08s ease, transform 0.08s ease;
}
.dpad-btn i,
.dpad-btn svg {
width: 18px;
height: 18px;
stroke-width: 2.5px;
pointer-events: none;
}
.dpad-btn:active {
background: var(--accent);
color: #050608;
border-color: var(--accent);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
}
.dpad-up {
grid-column: 2;
grid-row: 1;
border-radius: 8px 8px 0 0;
border-bottom: none;
background: linear-gradient(180deg, #272c3a 0%, #1e222d 100%);
}
.dpad-up i,
.dpad-up svg {
color: #fca5a5;
}
.dpad-left {
grid-column: 1;
grid-row: 2;
border-radius: 8px 0 0 8px;
border-right: none;
background: linear-gradient(90deg, #272c3a 0%, #1e222d 100%);
}
.dpad-center {
grid-column: 2;
grid-row: 2;
background: #171a23;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.dpad-center::after {
content: '';
width: 16px;
height: 16px;
border-radius: 50%;
background: #12141c;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.8), 0 1px 1px rgba(255, 255, 255, 0.08);
}
.dpad-right {
grid-column: 3;
grid-row: 2;
border-radius: 0 8px 8px 0;
border-left: none;
background: linear-gradient(270deg, #272c3a 0%, #1e222d 100%);
}
.dpad-down {
grid-column: 2;
grid-row: 3;
border-radius: 0 0 8px 8px;
border-top: none;
background: linear-gradient(0deg, #272c3a 0%, #1e222d 100%);
}
.tetradog-nes-center-btns {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
padding: 0 4px;
}
.nes-pill-btn {
background: #181b24;
border: 1px solid rgba(255, 255, 255, 0.14);
border-radius: 12px;
width: 52px;
height: 22px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
user-select: none;
touch-action: manipulation;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.4), inset 0 1px 1px rgba(255, 255, 255, 0.1);
transform: rotate(-18deg);
transition: transform 0.08s ease, background 0.08s ease;
}
.nes-pill-btn:active {
transform: rotate(-18deg) scale(0.92);
background: #272b38;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.6);
}
.nes-pill-label {
font-family: var(--font-mono);
font-size: 8.5px;
font-weight: 800;
letter-spacing: 0.6px;
color: #94a3b8;
}
#tbtn-hold .nes-pill-label {
color: #93c5fd;
}
#tbtn-pause .nes-pill-label {
color: #fbbf24;
}
.tetradog-nes-actions {
display: flex;
align-items: flex-end;
gap: 12px;
transform: rotate(-14deg);
margin-right: 4px;
}
.nes-round-btn {
width: 48px;
height: 48px;
border-radius: 50%;
border: 2px solid rgba(255, 255, 255, 0.18);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
user-select: none;
touch-action: manipulation;
box-shadow: 0 5px 12px rgba(0, 0, 0, 0.6), inset 0 2px 2px rgba(255, 255, 255, 0.35);
transition: transform 0.06s ease, filter 0.06s ease;
}
.nes-round-btn:active {
transform: scale(0.92);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.8), inset 0 2px 4px rgba(0, 0, 0, 0.5);
filter: brightness(1.2);
}
.nes-btn-b {
background: linear-gradient(135deg, #ef4444 0%, #991b1b 100%);
color: #ffffff;
}
.nes-btn-a {
background: linear-gradient(135deg, #f59e0b 0%, #b45309 100%);
color: #ffffff;
margin-bottom: 12px;
}
.nes-btn-name {
font-family: var(--font-mono);
font-size: 15px;
font-weight: 900;
line-height: 1;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.nes-btn-sub {
font-size: 9px;
font-weight: 700;
line-height: 1;
opacity: 0.85;
margin-top: 1px;
}
.tetradog-lb-header-bar {
padding: 8px 12px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
}
.tetradog-lb-mode-pills {
display: flex;
gap: 4px;
}
.tetradog-lb-tab {
background: transparent;
border: 1px solid transparent;
color: var(--text-dim);
font-size: 11px;
padding: 3px 8px;
border-radius: 4px;
cursor: pointer;
}
.tetradog-lb-tab:hover {
color: var(--text-main);
background: var(--bg-hover);
}
.tetradog-lb-tab.active {
background: rgba(245, 158, 11, 0.18);
border-color: var(--accent);
color: var(--accent);
font-weight: 700;
}
.tetradog-lb-scope-toggle {
display: flex;
align-items: center;
gap: 10px;
font-size: 11px;
color: var(--text-dim);
}
.tetradog-scope-btn {
cursor: pointer;
display: flex;
align-items: center;
gap: 4px;
}
.tetradog-user-summary {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 6px;
padding: 8px 12px;
background: rgba(18, 20, 26, 0.7);
border-bottom: 1px solid var(--border);
}
.tetradog-summary-item {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.tetradog-summary-lbl {
font-size: 8.5px;
font-weight: 700;
color: var(--text-dim);
}
.tetradog-summary-val {
font-family: var(--font-mono);
font-size: 13px;
font-weight: 800;
color: var(--text-main);
}
.tetradog-lb-table-wrap {
flex: 1;
overflow-y: auto;
background: #090a0f;
}
.tetradog-table {
width: 100%;
border-collapse: collapse;
font-size: 11px;
}
.tetradog-table th {
position: sticky;
top: 0;
background: var(--bg-dark);
padding: 6px 10px;
text-align: left;
font-size: 10px;
color: var(--text-dim);
font-weight: 700;
border-bottom: 1px solid var(--border);
z-index: 2;
}
.tetradog-table td {
padding: 6px 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
color: var(--text-main);
font-family: var(--font-mono);
}
.tetradog-table tr:hover {
background: rgba(255, 255, 255, 0.03);
}
.tetradog-table tr.current-user-row {
background: rgba(245, 158, 11, 0.12);
border-left: 2px solid var(--accent);
}
.tetradog-table tr.current-user-row td {
color: #fbbf24;
font-weight: 700;
}
.tetradog-rank-medal {
display: inline-flex;
align-items: center;
justify-content: center;
width: 20px;
height: 20px;
border-radius: 50%;
font-weight: 800;
font-size: 11px;
}
.rank-gold {
background: rgba(251, 191, 36, 0.25);
color: #fbbf24;
border: 1px solid rgba(251, 191, 36, 0.6);
}
.rank-silver {
background: rgba(203, 213, 225, 0.25);
color: #cbd5e1;
border: 1px solid rgba(203, 213, 225, 0.6);
}
.rank-bronze {
background: rgba(217, 119, 6, 0.25);
color: #d97706;
border: 1px solid rgba(217, 119, 6, 0.6);
}
.tetradog-lb-footer {
padding: 6px 12px;
background: var(--bg-dark);
border-top: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
}
.tetradog-settings-scroll {
flex: 1;
overflow-y: auto;
padding: 12px 16px;
display: flex;
flex-direction: column;
gap: 16px;
}
.tetradog-settings-section {
background: rgba(18, 20, 26, 0.6);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 12px;
display: flex;
flex-direction: column;
gap: 10px;
}
.tetradog-section-title {
font-size: 12px;
font-weight: 700;
color: var(--accent);
margin-bottom: 2px;
}
.tetradog-setting-row {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.tetradog-setting-row:last-child {
border-bottom: none;
padding-bottom: 0;
}
.tetradog-setting-title {
font-size: 11px;
font-weight: 600;
color: var(--text-main);
}
.tetradog-setting-sub {
font-size: 10px;
color: var(--text-dim);
}
.tetradog-statusbar {
min-height: 30px;
height: 30px;
background: var(--bg-dark);
border-top: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 10px;
font-size: 11px;
user-select: none;
flex-shrink: 0;
z-index: 5;
}
.tetradog-sb-left,
.tetradog-sb-center,
.tetradog-sb-right {
display: flex;
align-items: center;
gap: 8px;
}
.tetradog-sb-center {
gap: 10px;
}
.tetradog-statusbar-sound-btn {
width: 22px;
height: 22px;
border-radius: var(--radius);
background: var(--accent);
color: #040507;
border: 1px solid rgba(245, 158, 11, 0.4);
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
padding: 0;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 6px rgba(245, 158, 11, 0.35);
transition: all 0.15s ease;
}
.tetradog-statusbar-sound-btn i,
.tetradog-statusbar-sound-btn svg {
width: 12px;
height: 12px;
stroke-width: 2.4px;
}
.tetradog-statusbar-sound-btn:hover {
transform: scale(1.06);
filter: brightness(1.1);
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.5);
}
.tetradog-statusbar-sound-btn:active {
transform: scale(0.94);
}
.tetradog-statusbar-sound-btn.muted {
background: rgba(255, 255, 255, 0.08);
color: var(--text-dim);
border-color: rgba(255, 255, 255, 0.12);
box-shadow: none;
}
.tetradog-statusbar-sound-btn.muted:hover {
background: rgba(255, 255, 255, 0.15);
color: var(--text-main);
}
.tetradog-sb-hint {
font-size: 10px;
color: var(--text-dim);
font-family: var(--font-mono);
}
.tetradog-sb-pill {
display: inline-flex;
align-items: center;
gap: 5px;
background: rgba(0, 0, 0, 0.4);
padding: 1px 7px;
border-radius: 4px;
border: 1px solid rgba(255, 255, 255, 0.06);
font-family: var(--font-mono);
font-size: 11px;
}
.tetradog-sb-label {
font-size: 8.5px;
font-weight: 700;
color: var(--text-dim);
letter-spacing: 0.5px;
}
.tetradog-sb-val {
font-weight: 700;
color: var(--accent);
}
.tetradog-sb-engine {
font-size: 9.5px;
color: var(--text-dim);
font-family: var(--font-mono);
}
.tetradog-pill {
position: fixed;
bottom: 16px;
right: 160px;
height: 32px;
padding: 0 12px;
background: var(--bg-panel);
border: 1px solid var(--accent);
border-radius: 16px;
display: flex;
align-items: center;
gap: 8px;
font-size: 12px;
font-weight: 700;
color: var(--accent);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
cursor: pointer;
z-index: 2840;
user-select: none;
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.tetradog-pill:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(245, 158, 11, 0.3);
}
.tetradog-pill-score {
font-family: var(--font-mono);
font-size: 11px;
background: rgba(245, 158, 11, 0.15);
padding: 1px 6px;
border-radius: 4px;
}
.tetradog-theme-gameboy {
background: #306230 !important;
color: #0f380f !important;
}
.tetradog-theme-gameboy .tetradog-body,
.tetradog-theme-gameboy .tetradog-canvas-container,
.tetradog-theme-gameboy .tetradog-lb-table-wrap {
background: #0f380f !important;
}
.tetradog-theme-gameboy .tetradog-main-canvas {
filter: sepia(1) hue-rotate(50deg) saturate(2);
}
.tetradog-theme-nes .tetradog-main-canvas {
filter: contrast(1.1) saturate(1.2);
}
.tetradog-theme-cyberpunk {
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.7), 0 0 20px rgba(244, 63, 94, 0.25) !important;
}
.tetradog-theme-cyberpunk .tetradog-main-canvas {
filter: saturate(1.3);
}
@media (max-width: 640px) {
.desktop-only-card {
display: none !important;
}
.mobile-only-flex {
display: flex !important;
}
.modal-header .btn[onclick*="dock"],
.modal-header .btn[onclick*="minimize"],
.modal-header .btn[onclick*="maximize"],
.modal-header .btn[onclick*="Fullscreen"],
.modal-header .btn[onclick*="toggleTerminalFullscreen"],
.modal-header .btn[onclick*="toggleDocViewerFullscreen"],
.modal-header .btn[onclick*="toggleDiskUsageMaximize"],
.modal-header .btn[onclick*="toggleDocViewerFloating"],
.modal-header .btn[onclick*="toggleImageViewerFloating"],
.modal-header .btn[id*="maximize"],
.modal-header .btn[id*="minimize"],
.modal-header .btn[id*="dock"],
.modal-header .btn.desktop-only,
.modal-header .header-sep.desktop-only,
.modal-header .header-sep:has(+ .desktop-only),
.modal-header button:has(i[data-lucide="panel-left-close"]),
.modal-header button:has(i[data-lucide="minus"]),
.modal-header button:has(i[data-lucide="maximize-2"]),
.modal-header button:has(i[data-lucide="picture-in-picture"]) {
display: none !important;
}
.modal-header .modal-close-btn,
.modal-header button:has(i[data-lucide="x"]) {
display: inline-flex !important;
pointer-events: auto !important;
cursor: pointer !important;
}
.floating-tetradog-window,
.floating-chewtoy-window,
#dynamic-chewtoy-window {
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100% !important;
height: 100dvh !important;
height: var(--viewport-height, 100dvh) !important;
min-width: 100vw !important;
min-height: 0 !important;
max-width: 100vw !important;
max-height: 100% !important;
max-height: 100dvh !important;
max-height: var(--viewport-height, 100dvh) !important;
border-radius: 0 !important;
border: none !important;
box-shadow: none !important;
position: fixed !important;
flex-direction: column;
overflow: hidden !important;
padding-bottom: max(env(safe-area-inset-bottom, 0px), var(--mobile-bottom-offset, 0px));
box-sizing: border-box !important;
}
.tetradog-header {
min-height: 38px;
height: 38px;
padding: 0 8px;
flex-shrink: 0;
}
.tetradog-view {
height: 100%;
flex: 1;
min-height: 0;
overflow: hidden;
}
.tetradog-game-view {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
flex: 1;
min-height: 0;
overflow: hidden;
}
.tetradog-arena {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 2px 6px;
gap: 6px;
overflow: hidden;
flex: 1 1 auto;
min-height: 0;
}
.tetradog-side-col {
width: 52px;
gap: 4px;
align-items: center;
flex-shrink: 0;
}
.tetradog-panel-card {
padding: 3px 2px;
width: 100%;
box-sizing: border-box;
}
.tetradog-card-title {
font-size: 8px;
margin-bottom: 2px;
}
.tetradog-key-hint {
display: none !important;
}
.tetradog-canvas-wrap {
padding: 0;
}
#tetradog-hold-canvas {
width: 44px !important;
height: 44px !important;
}
#tetradog-next-canvas {
width: 44px !important;
height: 96px !important;
}
.tetradog-center-col {
flex: 1 1 auto;
min-width: 0;
min-height: 0;
max-width: 240px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.tetradog-canvas-container {
flex: 1 1 auto;
min-height: 0;
max-height: calc(var(--viewport-height, 100dvh) - 200px - max(env(safe-area-inset-bottom, 0px), var(--mobile-bottom-offset, 0px)));
aspect-ratio: 1 / 2;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
}
.tetradog-main-canvas {
width: auto !important;
height: 100% !important;
max-width: 100% !important;
max-height: 100% !important;
object-fit: contain;
}
.tetradog-nes-controller {
display: flex !important;
padding: 4px 8px 6px 8px;
flex-shrink: 0;
box-sizing: border-box;
}
.tetradog-statusbar {
min-height: 26px;
height: 26px;
padding: 0 6px;
flex-shrink: 0;
box-sizing: border-box;
}
.tetradog-sb-center {
gap: 4px;
}
.tetradog-sb-pill {
padding: 1px 4px;
font-size: 9.5px;
gap: 3px;
}
.tetradog-sb-label {
font-size: 7px;
}
.tetradog-sb-val {
font-size: 9.5px;
}
.tetradog-sb-right {
display: none;
}
}
@media (min-width: 641px) and (max-width: 1024px) {
.floating-tetradog-window {
width: min(540px, 94vw);
height: min(720px, 94vh);
min-width: 420px;
min-height: 540px;
}
.tetradog-arena {
padding: 8px 10px;
gap: 10px;
flex: 1;
min-height: 0;
}
.tetradog-side-col {
width: 90px;
}
#tetradog-hold-canvas {
width: 74px !important;
height: 74px !important;
}
#tetradog-next-canvas {
width: 74px !important;
height: 180px !important;
}
.tetradog-canvas-container {
max-height: calc(100vh - 240px);
}
.tetradog-nes-controller {
display: flex !important;
}
}
@media (pointer: coarse) and (min-width: 1025px) {
.tetradog-nes-controller {
display: flex !important;
}
}
.floating-audioplayer-window {
position: fixed;
top: 70px;
left: calc(50% - 240px);
width: 480px;
min-width: 320px;
max-width: calc(100vw - 24px);
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(255, 255, 255, 0.06);
display: flex;
flex-direction: column;
z-index: 1540;
overflow: hidden;
user-select: none;
animation: editorWinPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}
.floating-audioplayer-window.maximized {
top: 40px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 72px) !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.floating-audioplayer-window.drag-over {
border-color: var(--accent) !important;
box-shadow: 0 0 20px rgba(245, 158, 11, 0.4) !important;
}
.audioplayer-header {
padding: 6px 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
flex-shrink: 0;
cursor: grab;
min-height: 42px;
box-sizing: border-box;
}
.audioplayer-header:active {
cursor: grabbing;
}
.audioplayer-header-left {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.audioplayer-drawer-btn.active {
background: rgba(245, 158, 11, 0.18) !important;
color: var(--accent) !important;
border-color: rgba(245, 158, 11, 0.4) !important;
}
.audioplayer-header-center {
flex: 1;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.audioplayer-header-actions {
display: flex;
align-items: center;
gap: 3px;
flex-shrink: 0;
}
.audioplayer-header-actions button.active {
background: rgba(245, 158, 11, 0.18);
color: var(--accent);
border-color: rgba(245, 158, 11, 0.35);
}
.audioplayer-body {
display: flex;
flex-direction: column;
background: var(--bg-panel);
overflow: hidden;
}
.audioplayer-stage {
padding: 12px;
display: flex;
flex-direction: column;
gap: 10px;
background: var(--bg-dark);
}
.audioplayer-display-panel {
display: flex;
gap: 12px;
align-items: center;
background: rgba(0, 0, 0, 0.35);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 10px;
position: relative;
overflow: hidden;
}
.audioplayer-vis-wrap {
width: 140px;
height: 52px;
background: #06070a;
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: var(--radius-sm);
overflow: hidden;
flex-shrink: 0;
cursor: pointer;
position: relative;
}
.audioplayer-vis-wrap:hover::after {
content: 'CLICK: MODE';
position: absolute;
top: 2px;
right: 4px;
font-size: 7px;
font-family: var(--font-mono);
color: var(--accent);
opacity: 0.8;
}
.audioplayer-vis-canvas {
width: 100%;
height: 100%;
display: block;
}
.audioplayer-meta-wrap {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
justify-content: center;
gap: 3px;
overflow: hidden;
}
.audioplayer-title-row {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 6px;
overflow: hidden;
}
.audioplayer-title-text {
font-size: 13px;
font-weight: 700;
color: var(--text-main);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.audioplayer-time-badge {
font-family: var(--font-mono);
font-size: 11px;
font-weight: 700;
color: var(--accent);
flex-shrink: 0;
}
.audioplayer-artist-text {
font-size: 11px;
color: var(--text-muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.audioplayer-tech-pills {
display: flex;
align-items: center;
gap: 4px;
margin-top: 2px;
}
.audioplayer-tech-pill {
font-family: var(--font-mono);
font-size: 8px;
font-weight: 700;
padding: 1px 4px;
border-radius: 3px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border);
color: var(--text-muted);
letter-spacing: 0.3px;
}
.audioplayer-eq-drawer {
background: rgba(0, 0, 0, 0.25);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 8px 10px;
display: flex;
flex-direction: column;
gap: 8px;
animation: slideDownEq 0.15s ease-out;
}
@keyframes slideDownEq {
from { opacity: 0; transform: translateY(-6px); }
to { opacity: 1; transform: translateY(0); }
}
.audioplayer-eq-header {
display: flex;
align-items: center;
justify-content: space-between;
}
.audioplayer-eq-sliders-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 2px;
padding: 4px 0;
}
.audioplayer-eq-slider-col {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
flex: 1;
}
.audioplayer-eq-db {
font-family: var(--font-mono);
font-size: 7.5px;
font-weight: 700;
color: var(--accent);
height: 10px;
line-height: 10px;
}
.audioplayer-eq-vslider {
writing-mode: bt-lr;
-webkit-appearance: slider-vertical;
width: 14px;
height: 54px;
accent-color: var(--accent);
cursor: pointer;
background: rgba(255, 255, 255, 0.06);
border-radius: 3px;
}
.audioplayer-eq-freq {
font-family: var(--font-mono);
font-size: 7.5px;
font-weight: 700;
color: var(--text-muted);
}
.audioplayer-scrubber-wrapper {
position: relative;
padding: 4px 0;
cursor: pointer;
}
.audioplayer-scrubber-track {
width: 100%;
height: 6px;
background: rgba(255, 255, 255, 0.1);
border-radius: 3px;
position: relative;
overflow: visible;
}
.audioplayer-scrubber-progress {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 0%;
background: var(--accent);
border-radius: 3px;
pointer-events: none;
}
.audioplayer-scrubber-thumb {
position: absolute;
top: 50%;
left: 0%;
width: 12px;
height: 12px;
background: #ffffff;
border: 2px solid var(--accent);
border-radius: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
transition: transform 0.1s ease;
}
.audioplayer-scrubber-wrapper:hover .audioplayer-scrubber-thumb {
transform: translate(-50%, -50%) scale(1.2);
}
.audioplayer-scrubber-tooltip {
position: absolute;
bottom: 16px;
padding: 2px 5px;
background: var(--bg-dark);
border: 1px solid var(--accent);
border-radius: 3px;
font-family: var(--font-mono);
font-size: 9px;
color: var(--accent);
pointer-events: none;
transform: translateX(-50%);
white-space: nowrap;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
z-index: 10;
}
.audioplayer-controls-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.audioplayer-controls-left {
display: flex;
align-items: center;
gap: 3px;
}
.audioplayer-play-btn {
width: 32px;
height: 32px;
border-radius: 50% !important;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.35);
}
.audioplayer-time-display {
display: flex;
align-items: center;
gap: 4px;
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-muted);
margin-left: 6px;
cursor: pointer;
user-select: none;
}
.audioplayer-controls-right {
display: flex;
align-items: center;
gap: 6px;
}
.audioplayer-volume-group {
display: flex;
align-items: center;
gap: 4px;
}
.audioplayer-volume-slider {
width: 70px;
height: 4px;
cursor: pointer;
accent-color: var(--accent);
}
.audioplayer-playlist-sidebar {
border-top: 1px solid var(--border);
background: var(--bg-panel);
display: flex;
flex-direction: column;
max-height: 220px;
animation: slideDownEq 0.15s ease-out;
}
.audioplayer-playlist-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
}
.audioplayer-playlist-filter-row {
padding: 4px 8px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
}
.audioplayer-playlist-list {
flex: 1;
overflow-y: auto;
padding: 4px;
display: flex;
flex-direction: column;
gap: 2px;
max-height: 160px;
}
.audioplayer-pl-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 4px 8px;
border-radius: var(--radius-sm);
cursor: pointer;
font-size: 11px;
color: var(--text-muted);
gap: 6px;
transition: background 0.1s ease;
}
.audioplayer-pl-row:hover {
background: var(--bg-hover);
color: var(--text-main);
}
.audioplayer-pl-row.playing {
background: rgba(245, 158, 11, 0.15);
color: var(--accent);
font-weight: 700;
}
.audioplayer-pl-row.selected {
border: 1px solid var(--border-focus);
}
.audioplayer-pl-num {
font-family: var(--font-mono);
font-size: 9.5px;
opacity: 0.6;
width: 20px;
flex-shrink: 0;
}
.audioplayer-pl-title {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.audioplayer-pl-time {
font-family: var(--font-mono);
font-size: 9.5px;
opacity: 0.7;
flex-shrink: 0;
}
.audioplayer-pl-remove {
opacity: 0;
cursor: pointer;
padding: 2px;
border-radius: 3px;
border: none;
background: transparent;
color: var(--text-muted);
}
.audioplayer-pl-row:hover .audioplayer-pl-remove {
opacity: 0.7;
}
.audioplayer-pl-remove:hover {
opacity: 1 !important;
color: #ef4444;
}
.audioplayer-playlist-empty {
padding: 20px 10px;
text-align: center;
color: var(--text-muted);
font-size: 11px;
}
.sounddog-pill {
position: fixed;
bottom: 16px;
left: 16px;
height: 38px;
padding: 0 12px;
background: rgba(21, 24, 32, 0.94);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(245, 158, 11, 0.4);
border-radius: 20px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6), 0 0 14px rgba(245, 158, 11, 0.2);
display: flex;
align-items: center;
gap: 10px;
z-index: 2890;
cursor: pointer;
user-select: none;
overflow: hidden;
animation: slideUpPill 0.22s cubic-bezier(0.16, 1, 0.3, 1);
transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}
.sounddog-pill:hover {
transform: translateY(-2px);
border-color: var(--accent);
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.75), 0 0 18px rgba(245, 158, 11, 0.35);
background: rgba(26, 30, 40, 0.96);
}
.sounddog-pill-progress {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 2.5px;
background: rgba(255, 255, 255, 0.08);
pointer-events: none;
}
.sounddog-pill-progress-fill {
height: 100%;
width: 0%;
background: var(--accent);
box-shadow: 0 0 6px var(--accent);
transition: width 0.1s linear;
}
.sounddog-pill-wave {
display: flex;
align-items: flex-end;
gap: 2px;
height: 14px;
min-width: 14px;
flex-shrink: 0;
}
.sounddog-pill-wave span {
width: 2.5px;
height: 4px;
background: var(--accent);
border-radius: 1px;
animation: sounddogWave 0.9s infinite ease-in-out alternate;
animation-play-state: paused;
opacity: 0.5;
transition: opacity 0.2s ease;
}
.sounddog-pill.playing .sounddog-pill-wave span,
.sounddog-pill-wave.playing span {
animation-play-state: running;
opacity: 1;
}
.sounddog-pill-wave span:nth-child(2) { animation-delay: 0.18s; }
.sounddog-pill-wave span:nth-child(3) { animation-delay: 0.36s; }
.sounddog-pill-wave span:nth-child(4) { animation-delay: 0.54s; }
@keyframes sounddogWave {
0% { height: 3px; }
100% { height: 14px; }
}
.sounddog-pill-info {
display: flex;
flex-direction: column;
justify-content: center;
gap: 1px;
min-width: 80px;
max-width: 160px;
overflow: hidden;
}
.sounddog-pill-title {
font-size: 11.5px;
font-weight: 700;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
}
.sounddog-pill-time {
font-size: 9.5px;
font-family: var(--font-mono);
color: var(--text-dim, #9ca3af);
white-space: nowrap;
line-height: 1.1;
}
.sounddog-pill-controls {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
margin-left: 2px;
}
.sounddog-pill-btn {
width: 24px;
height: 24px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.12);
color: var(--text-main);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
padding: 0;
transition: all 0.15s ease;
}
.sounddog-pill-btn:hover {
background: var(--accent);
color: #0b0c10;
border-color: var(--accent);
transform: scale(1.08);
}
.sounddog-pill-btn-play {
background: rgba(245, 158, 11, 0.18);
border-color: rgba(245, 158, 11, 0.4);
color: var(--accent);
}
.sounddog-pill-btn-play:hover {
background: var(--accent);
color: #0b0c10;
box-shadow: 0 0 10px rgba(245, 158, 11, 0.5);
}
.sounddog-pill-close {
background: rgba(255, 255, 255, 0.04);
border-color: transparent;
opacity: 0.7;
}
.sounddog-pill-close:hover {
background: rgba(239, 68, 68, 0.25);
color: #ef4444;
border-color: rgba(239, 68, 68, 0.5);
opacity: 1;
transform: scale(1.08);
}
@media (max-width: 1024px) {
.sounddog-pill {
bottom: 56px;
left: 12px;
max-width: calc(100vw - 24px);
}
}
@media (max-width: 600px) {
.floating-audioplayer-window {
top: 40px !important;
left: 0 !important;
width: 100vw !important;
max-width: 100vw !important;
height: calc(100vh - 40px) !important;
border-radius: 0 !important;
}
.audioplayer-display-panel {
flex-direction: column;
align-items: stretch;
}
.audioplayer-vis-wrap {
width: 100%;
height: 48px;
}
}
.fleet-switcher-wrapper {
position: relative;
display: inline-flex;
align-items: center;
}
.fleet-switcher-dropdown {
position: absolute;
top: calc(100% + 6px);
left: 0;
min-width: 320px;
max-width: 400px;
background-color: var(--bg-panel, #18181b);
border: 1px solid var(--border, #3f3f46);
border-radius: var(--radius, 6px);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.8), 0 0 0 1px rgba(255, 255, 255, 0.06);
z-index: 3100;
overflow: hidden;
animation: fleetDropdownFade 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes fleetDropdownFade {
from { opacity: 0; transform: translateY(-4px); }
to { opacity: 1; transform: translateY(0); }
}
.fleet-dropdown-header {
padding: 9px 12px;
background-color: var(--bg-header, #202024);
border-bottom: 1px solid var(--border, #3f3f46);
display: flex;
justify-content: space-between;
align-items: center;
}
.fleet-dropdown-title {
font-size: 12px;
font-weight: 700;
color: var(--text-main, #f4f4f5);
display: inline-flex;
align-items: center;
gap: 6px;
}
.fleet-dropdown-status {
font-size: 10.5px;
font-family: var(--font-mono);
font-weight: 600;
padding: 2px 7px;
border-radius: 4px;
background: rgba(245, 158, 11, 0.18);
color: var(--accent, #f59e0b);
border: 1px solid rgba(245, 158, 11, 0.35);
}
.fleet-dropdown-nodes {
max-height: min(600px, calc(80vh - 80px));
overflow-y: auto;
padding: 8px;
display: flex;
flex-direction: column;
gap: 5px;
background-color: var(--bg-panel, #18181b);
}
.fleet-node-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 11px;
border-radius: 5px;
cursor: pointer;
transition: all 0.15s ease;
background-color: var(--bg-dark, #121214);
border: 1px solid var(--border, #3f3f46);
}
.fleet-node-item:hover {
background-color: var(--bg-hover, #323238);
border-color: rgba(255, 255, 255, 0.2);
}
.fleet-node-item.active {
background-color: rgba(245, 158, 11, 0.14);
border-color: var(--accent, #f59e0b);
box-shadow: 0 0 10px rgba(245, 158, 11, 0.15), inset 0 0 0 1px rgba(245, 158, 11, 0.25);
}
.fleet-node-left {
display: flex;
align-items: center;
gap: 10px;
min-width: 0;
flex: 1;
}
.fleet-node-info {
display: flex;
flex-direction: column;
min-width: 0;
overflow: hidden;
}
.fleet-node-name {
font-size: 12px;
font-weight: 600;
color: var(--text-main, #f4f4f5);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: flex;
align-items: center;
gap: 6px;
}
.fleet-node-url {
font-size: 11px;
font-family: var(--font-mono);
color: var(--text-muted, #a1a1aa);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 1px;
}
.fleet-node-right {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.fleet-ping-dot {
width: 7px;
height: 7px;
border-radius: 50%;
display: inline-block;
flex-shrink: 0;
}
.fleet-ping-dot.green {
background: #10b981;
box-shadow: 0 0 6px rgba(16, 185, 129, 0.7);
}
.fleet-ping-dot.amber {
background: #f59e0b;
box-shadow: 0 0 6px rgba(245, 158, 11, 0.7);
}
.fleet-ping-dot.red {
background: #ef4444;
box-shadow: 0 0 6px rgba(239, 68, 68, 0.7);
}
.fleet-ping-dot.gray {
background: #6b7280;
}
.fleet-node-latency {
font-family: var(--font-mono);
font-size: 10.5px;
color: var(--text-muted, #a1a1aa);
}
.fleet-dropdown-actions {
padding: 8px 10px;
background-color: var(--bg-header, #202024);
border-top: 1px solid var(--border, #3f3f46);
display: flex;
gap: 6px;
}
.fleet-dropdown-action-btn {
flex: 1;
height: 28px;
font-size: 11.5px;
font-weight: 500;
background-color: var(--bg-dark, #121214);
border: 1px solid var(--border, #3f3f46);
border-radius: var(--radius, 6px);
color: var(--text-main, #f4f4f5);
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 5px;
transition: all 0.15s ease;
}
.fleet-dropdown-action-btn:hover {
background-color: var(--bg-hover, #323238);
border-color: var(--accent, #f59e0b);
color: var(--accent, #f59e0b);
}
.fleet-manager-grid {
display: grid;
grid-template-columns: 310px 1fr;
gap: 14px;
min-height: 440px;
}
@media (max-width: 768px) {
.fleet-manager-grid {
grid-template-columns: 1fr;
}
}
.fleet-nodes-sidebar {
display: flex;
flex-direction: column;
gap: 8px;
border-right: 1px solid var(--border);
padding-right: 14px;
}
@media (max-width: 768px) {
.fleet-nodes-sidebar {
border-right: none;
padding-right: 0;
border-bottom: 1px solid var(--border);
padding-bottom: 12px;
}
}
.fleet-nodes-list {
display: flex;
flex-direction: column;
gap: 6px;
overflow-y: auto;
max-height: 380px;
}
.fleet-card {
padding: 10px;
background: rgba(255, 255, 255, 0.025);
border: 1px solid var(--border);
border-radius: var(--radius);
cursor: pointer;
transition: all 0.15s ease;
display: flex;
flex-direction: column;
gap: 6px;
}
.fleet-card:hover {
background: rgba(255, 255, 255, 0.05);
border-color: rgba(255, 255, 255, 0.15);
}
.fleet-card.active {
background: rgba(245, 158, 11, 0.08);
border-color: var(--accent);
box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.3);
}
.fleet-card-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.fleet-card-name {
font-size: 12.5px;
font-weight: 700;
color: var(--text-main);
display: flex;
align-items: center;
gap: 6px;
}
.fleet-card-url {
font-size: 11px;
font-family: var(--font-mono);
color: var(--text-dim);
word-break: break-all;
}
.fleet-card-footer {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 10.5px;
}
.fleet-tag-pill {
font-size: 10px;
font-family: var(--font-mono);
padding: 1px 5px;
border-radius: 3px;
background: rgba(255, 255, 255, 0.07);
color: var(--text-dim);
}
.fleet-color-radio-group {
display: flex;
gap: 6px;
align-items: center;
flex-wrap: wrap;
}
.fleet-color-swatch {
width: 22px;
height: 22px;
border-radius: 50%;
cursor: pointer;
border: 2px solid transparent;
transition: transform 0.15s, border-color 0.15s;
}
.fleet-color-swatch:hover {
transform: scale(1.15);
}
.fleet-color-swatch.active {
border-color: #fff;
transform: scale(1.15);
box-shadow: 0 0 8px rgba(255, 255, 255, 0.4);
}
.fleet-test-box {
padding: 10px 12px;
border-radius: var(--radius);
background: rgba(0, 0, 0, 0.25);
border: 1px solid var(--border);
display: flex;
flex-direction: column;
gap: 6px;
}
.fleet-test-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.fleet-test-results {
font-size: 11px;
font-family: var(--font-mono);
display: flex;
flex-direction: column;
gap: 3px;
color: var(--text-dim);
}
.fleet-modal-footer {
padding: 8px 14px;
background: var(--bg-header);
border-top: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.fleet-footer-note {
font-size: 11px;
color: var(--text-dim);
display: inline-flex;
align-items: center;
gap: 6px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
min-width: 0;
flex-shrink: 1;
}
.fleet-footer-actions {
display: inline-flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
white-space: nowrap;
}
.fleet-footer-actions .btn {
white-space: nowrap;
line-height: normal;
display: inline-flex;
align-items: center;
gap: 5px;
}
.pane-node-btn {
height: 26px !important;
padding: 0 7px !important;
display: inline-flex !important;
align-items: center !important;
gap: 5px !important;
background: var(--bg-panel);
border: 1px solid var(--border);
color: var(--text-main);
border-radius: var(--radius);
font-size: 11px;
font-weight: 600;
cursor: pointer;
transition: all 0.15s ease;
white-space: nowrap;
flex-shrink: 0;
}
.pane-node-btn:hover {
background: var(--bg-hover);
border-color: var(--accent);
}
.pane-node-btn.remote-active {
border-color: var(--accent);
background: rgba(245, 158, 11, 0.12);
box-shadow: 0 0 6px rgba(245, 158, 11, 0.2);
}
.pane-node-dot {
width: 7px;
height: 7px;
border-radius: 50%;
flex-shrink: 0;
display: inline-block;
}
.pane-node-chip {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 7px;
font-size: 11px;
font-weight: 600;
border-radius: 4px;
background: rgba(245, 158, 11, 0.15);
border: 1px solid rgba(245, 158, 11, 0.35);
color: var(--accent);
margin-right: 4px;
cursor: pointer;
flex-shrink: 0;
transition: all 0.15s ease;
}
.pane-node-chip:hover {
background: rgba(245, 158, 11, 0.25);
border-color: var(--accent);
}
.floating-mediaplayer-window {
position: fixed;
top: 55px;
left: 100px;
width: min(1020px, calc(100vw - 60px));
height: min(680px, calc(100vh - 85px));
max-width: 100vw;
max-height: 100vh;
min-width: 460px;
min-height: 320px;
background: #090a0f;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.85), 0 0 0 1px rgba(255, 255, 255, 0.08);
display: flex;
flex-direction: column;
z-index: 1550;
overflow: hidden;
animation: editorWinPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
user-select: none;
}
.floating-mediaplayer-window.maximized {
top: 40px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 72px) !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.floating-mediaplayer-window.fullscreen-mode {
top: 0 !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: 100vh !important;
border: none !important;
border-radius: 0 !important;
z-index: 9999 !important;
}
.floating-mediaplayer-window.fullscreen-mode .mediaplayer-header {
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: 20;
background: rgba(10, 12, 16, 0.8);
backdrop-filter: blur(8px);
opacity: 0;
transition: opacity 0.25s ease;
}
.floating-mediaplayer-window.fullscreen-mode:hover .mediaplayer-header,
.floating-mediaplayer-window.fullscreen-mode.controls-visible .mediaplayer-header {
opacity: 1;
}
.mediaplayer-header {
padding: 6px 12px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
flex-shrink: 0;
user-select: none;
cursor: grab;
min-height: 42px;
box-sizing: border-box;
}
.mediaplayer-header:active {
cursor: grabbing;
}
.mediaplayer-body {
flex: 1;
display: flex;
flex-direction: row;
overflow: hidden;
position: relative;
background: #000;
}
.mediaplayer-stage {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
background: #000;
position: relative;
overflow: hidden;
}
.mediaplayer-stage video {
max-width: 100%;
max-height: 100%;
width: 100%;
height: 100%;
object-fit: contain;
background: #000;
outline: none;
}
.mediaplayer-stage video.aspect-contain {
object-fit: contain !important;
}
.mediaplayer-stage video.aspect-cover {
object-fit: cover !important;
}
.mediaplayer-stage video.aspect-fill {
object-fit: fill !important;
}
.mediaplayer-stage video.aspect-16-9 {
aspect-ratio: 16 / 9;
object-fit: contain !important;
}
.mediaplayer-stage video.aspect-4-3 {
aspect-ratio: 4 / 3;
object-fit: contain !important;
}
.mediaplayer-audio-visualizer {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 20px;
padding: 40px 20px;
text-align: center;
z-index: 5;
}
.mediaplayer-audio-bars {
display: flex;
align-items: flex-end;
gap: 6px;
height: 60px;
}
.mediaplayer-audio-bars span {
width: 8px;
height: 10px;
background: var(--accent);
border-radius: 4px;
animation: mediaBarWave 1.2s infinite ease-in-out alternate;
}
.mediaplayer-audio-bars span:nth-child(1) { animation-delay: 0.1s; height: 25px; }
.mediaplayer-audio-bars span:nth-child(2) { animation-delay: 0.3s; height: 45px; }
.mediaplayer-audio-bars span:nth-child(3) { animation-delay: 0.5s; height: 18px; }
.mediaplayer-audio-bars span:nth-child(4) { animation-delay: 0.2s; height: 55px; }
.mediaplayer-audio-bars span:nth-child(5) { animation-delay: 0.4s; height: 35px; }
.mediaplayer-audio-bars span:nth-child(6) { animation-delay: 0.6s; height: 50px; }
.mediaplayer-audio-bars span:nth-child(7) { animation-delay: 0.15s; height: 20px; }
.mediaplayer-audio-bars span:nth-child(8) { animation-delay: 0.35s; height: 40px; }
@keyframes mediaBarWave {
0% { transform: scaleY(0.25); opacity: 0.4; }
100% { transform: scaleY(1); opacity: 1; box-shadow: 0 0 10px var(--accent); }
}
.mediaplayer-subtitles-overlay {
position: absolute;
bottom: 80px;
left: 50%;
transform: translateX(-50%);
max-width: 85%;
text-align: center;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-size: 18px;
font-weight: 600;
color: #fff;
background: rgba(0, 0, 0, 0.75);
padding: 4px 12px;
border-radius: 4px;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.9);
pointer-events: none;
z-index: 12;
line-height: 1.4;
white-space: pre-wrap;
}
.mediaplayer-error-overlay {
position: absolute;
inset: 0;
background: rgba(10, 12, 16, 0.94);
backdrop-filter: blur(12px);
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
z-index: 18;
}
.mediaplayer-error-box {
background: var(--bg-card, #1a1d24);
border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
border-radius: var(--radius, 8px);
padding: 28px 24px;
max-width: 480px;
width: 100%;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
}
.mediaplayer-error-icon {
width: 52px;
height: 52px;
border-radius: 50%;
background: rgba(239, 68, 68, 0.15);
border: 1px solid rgba(239, 68, 68, 0.3);
display: flex;
align-items: center;
justify-content: center;
color: #ef4444;
}
.mediaplayer-error-icon svg {
width: 26px;
height: 26px;
}
.mediaplayer-error-title {
font-size: 16px;
font-weight: 700;
color: var(--text-main, #f3f4f6);
}
.mediaplayer-error-desc {
font-size: 13px;
color: var(--text-dim, #9ca3af);
line-height: 1.5;
}
.mediaplayer-error-filename {
font-family: var(--font-mono);
font-size: 11px;
color: var(--accent, #f59e0b);
background: rgba(245, 158, 11, 0.1);
padding: 4px 10px;
border-radius: 4px;
word-break: break-all;
border: 1px solid rgba(245, 158, 11, 0.2);
}
.mediaplayer-error-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: 8px;
width: 100%;
}
.mediaplayer-osd {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(15, 17, 23, 0.85);
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.15);
padding: 16px 24px;
border-radius: 12px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
color: #fff;
font-size: 14px;
font-weight: 700;
pointer-events: none;
z-index: 15;
animation: osdFade 0.7s ease forwards;
}
.mediaplayer-osd svg {
width: 32px;
height: 32px;
color: var(--accent);
}
@keyframes osdFade {
0% { opacity: 0; transform: translate(-50%, -50%) scale(0.85); }
20% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
80% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
100% { opacity: 0; transform: translate(-50%, -50%) scale(1.05); }
}
.mediaplayer-overlay-controls {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(to top, rgba(0, 0, 0, 0.92) 0%, rgba(0, 0, 0, 0.6) 65%, transparent 100%);
padding: 24px 16px 12px 16px;
display: flex;
flex-direction: column;
gap: 8px;
z-index: 10;
transition: opacity 0.25s ease, transform 0.25s ease;
}
.mediaplayer-stage.hide-controls .mediaplayer-overlay-controls {
opacity: 0;
transform: translateY(8px);
pointer-events: none;
}
.mediaplayer-scrubber-wrapper {
position: relative;
width: 100%;
padding: 6px 0;
cursor: pointer;
}
.mediaplayer-scrubber-track {
width: 100%;
height: 4px;
background: rgba(255, 255, 255, 0.2);
border-radius: 2px;
position: relative;
transition: height 0.15s ease;
}
.mediaplayer-scrubber-wrapper:hover .mediaplayer-scrubber-track {
height: 6px;
}
.mediaplayer-scrubber-buffer {
position: absolute;
top: 0;
left: 0;
height: 100%;
background: rgba(255, 255, 255, 0.35);
border-radius: 2px;
width: 0%;
}
.mediaplayer-scrubber-progress {
position: absolute;
top: 0;
left: 0;
height: 100%;
background: var(--accent);
border-radius: 2px;
width: 0%;
box-shadow: 0 0 8px rgba(245, 158, 11, 0.6);
}
.mediaplayer-scrubber-thumb {
position: absolute;
top: 50%;
left: 0%;
transform: translate(-50%, -50%);
width: 12px;
height: 12px;
border-radius: 50%;
background: #fff;
border: 2px solid var(--accent);
box-shadow: 0 0 6px rgba(0, 0, 0, 0.6);
opacity: 0;
transition: opacity 0.15s ease;
pointer-events: none;
}
.mediaplayer-scrubber-wrapper:hover .mediaplayer-scrubber-thumb {
opacity: 1;
}
.mediaplayer-scrubber-tooltip {
position: absolute;
bottom: 18px;
transform: translateX(-50%);
background: rgba(15, 17, 23, 0.95);
border: 1px solid var(--border);
color: #fff;
font-family: var(--font-mono);
font-size: 10px;
padding: 2px 6px;
border-radius: 4px;
pointer-events: none;
white-space: nowrap;
}
.mediaplayer-controls-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.mediaplayer-controls-left,
.mediaplayer-controls-right {
display: flex;
align-items: center;
gap: 6px;
}
.mediaplayer-play-btn {
padding: 4px 14px !important;
border-radius: var(--radius);
}
.mediaplayer-time-display {
display: flex;
align-items: center;
gap: 4px;
font-family: var(--font-mono);
font-size: 11px;
color: var(--text-dim);
margin-left: 6px;
}
.mediaplayer-time-display span:first-child {
color: var(--text-main);
font-weight: 600;
}
.mediaplayer-volume-group {
display: flex;
align-items: center;
gap: 4px;
}
.mediaplayer-volume-slider {
width: 70px;
height: 4px;
}
.mediaplayer-playlist-sidebar {
width: 270px;
background: var(--bg-dark);
border-left: 1px solid var(--border);
display: flex;
flex-direction: column;
flex-shrink: 0;
transition: width 0.22s cubic-bezier(0.16, 1, 0.3, 1), margin-right 0.22s cubic-bezier(0.16, 1, 0.3, 1);
overflow: hidden;
}
.floating-mediaplayer-window.playlist-collapsed .mediaplayer-playlist-sidebar {
width: 0;
margin-right: -1px;
border-left: none;
}
.mediaplayer-playlist-header {
padding: 8px 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
min-height: 34px;
}
.mediaplayer-playlist-filter-row {
padding: 6px 10px;
border-bottom: 1px solid var(--border);
background: rgba(0, 0, 0, 0.2);
}
.mediaplayer-playlist-list {
flex: 1;
overflow-y: auto;
padding: 4px 0;
}
.mediaplayer-playlist-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 10px;
gap: 8px;
cursor: pointer;
border-left: 3px solid transparent;
transition: all 0.12s ease;
}
.mediaplayer-playlist-item:hover {
background: var(--bg-hover);
}
.mediaplayer-playlist-item.active {
background: rgba(245, 158, 11, 0.12);
border-left-color: var(--accent);
}
.mediaplayer-playlist-item-title {
font-size: 11px;
font-weight: 500;
color: var(--text-main);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
}
.mediaplayer-playlist-item.active .mediaplayer-playlist-item-title {
color: var(--accent);
font-weight: 700;
}
.mediaplayer-playlist-item-ext {
font-size: 9px;
font-family: var(--font-mono);
color: var(--text-muted);
text-transform: uppercase;
flex-shrink: 0;
}
.mediaplayer-dropdown {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7);
padding: 4px;
}
.mediaplayer-sub-item {
padding: 6px 10px;
font-size: 11px;
cursor: pointer;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: space-between;
color: var(--text-main);
}
.mediaplayer-sub-item:hover {
background: var(--bg-hover);
}
.mediaplayer-sub-item.active {
background: rgba(245, 158, 11, 0.15);
color: var(--accent);
font-weight: 700;
}
.mediaplayer-pill {
position: fixed;
bottom: 16px;
left: 360px;
height: 38px;
padding: 0 12px;
background: rgba(21, 24, 32, 0.94);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(245, 158, 11, 0.4);
border-radius: 20px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6), 0 0 14px rgba(245, 158, 11, 0.2);
display: flex;
align-items: center;
gap: 10px;
z-index: 2890;
cursor: pointer;
user-select: none;
overflow: hidden;
animation: slideUpPill 0.22s cubic-bezier(0.16, 1, 0.3, 1);
transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}
.mediaplayer-pill:hover {
transform: translateY(-2px);
border-color: var(--accent);
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.75), 0 0 18px rgba(245, 158, 11, 0.35);
background: rgba(26, 30, 40, 0.96);
}
.mediaplayer-pill-progress {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 2.5px;
background: rgba(255, 255, 255, 0.08);
pointer-events: none;
}
.mediaplayer-pill-progress-fill {
height: 100%;
width: 0%;
background: var(--accent);
box-shadow: 0 0 6px var(--accent);
transition: width 0.1s linear;
}
.mediaplayer-pill-icon {
width: 16px;
height: 16px;
object-fit: contain;
flex-shrink: 0;
}
.mediaplayer-pill-info {
display: flex;
flex-direction: column;
justify-content: center;
gap: 1px;
min-width: 80px;
max-width: 160px;
overflow: hidden;
}
.mediaplayer-pill-title {
font-size: 11.5px;
font-weight: 700;
color: var(--text-main);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
}
.mediaplayer-pill-time {
font-size: 9.5px;
font-family: var(--font-mono);
color: var(--text-dim, #9ca3af);
white-space: nowrap;
line-height: 1.1;
}
.mediaplayer-pill-controls {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
margin-left: 2px;
}
.mediaplayer-pill-btn {
width: 24px;
height: 24px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.12);
color: var(--text-main);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
padding: 0;
transition: all 0.15s ease;
}
.mediaplayer-pill-btn:hover {
background: var(--accent);
color: #0b0c10;
border-color: var(--accent);
transform: scale(1.08);
}
.mediaplayer-pill-btn-play {
background: rgba(245, 158, 11, 0.18);
border-color: rgba(245, 158, 11, 0.4);
color: var(--accent);
}
.mediaplayer-pill-btn-play:hover {
background: var(--accent);
color: #0b0c10;
box-shadow: 0 0 10px rgba(245, 158, 11, 0.5);
}
.mediaplayer-pill-close {
background: rgba(255, 255, 255, 0.04);
border-color: transparent;
opacity: 0.7;
}
.mediaplayer-pill-close:hover {
background: rgba(239, 68, 68, 0.25);
color: #ef4444;
border-color: rgba(239, 68, 68, 0.5);
opacity: 1;
transform: scale(1.08);
}
@media (max-width: 1024px) {
.mediaplayer-pill {
bottom: 56px;
left: 12px;
max-width: calc(100vw - 24px);
}
.sounddog-pill:not([style*="display: none"]) ~ .mediaplayer-pill,
#sounddog-pill:not([style*="display: none"]) ~ #mediaplayer-pill {
bottom: 102px;
}
}
.docked-mediaplayer-box {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
overflow: hidden;
background: #000;
}
.convertx-pill {
position: fixed;
bottom: 42px;
left: 420px;
z-index: 1800;
display: flex;
align-items: center;
gap: 8px;
background: var(--bg-card, #151820);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 5px 12px;
font-family: var(--font-mono);
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6);
cursor: pointer;
user-select: none;
transition: all 0.18s ease;
animation: slideUpPill 0.2s ease-out;
}
.convertx-pill:hover {
transform: translateY(-2px);
background: #1e222d;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.8), 0 0 12px rgba(245, 158, 11, 0.3);
}
.convertx-pill-title {
max-width: 180px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.convertx-pill-spin {
animation: spin 1s linear infinite;
color: var(--accent);
}
.chewtoy-dropzone {
border: 2px dashed rgba(245, 158, 11, 0.4);
background: rgba(245, 158, 11, 0.04);
border-radius: var(--radius, 6px);
padding: 20px;
text-align: center;
cursor: pointer;
transition: all 0.18s ease;
user-select: none;
}
.chewtoy-dropzone:hover,
.chewtoy-dropzone.dragover {
border-color: var(--accent, #f59e0b);
background: rgba(245, 158, 11, 0.12);
box-shadow: 0 0 16px rgba(245, 158, 11, 0.15);
}
.chewtoy-dropzone-icon {
font-size: 26px;
color: var(--accent, #f59e0b);
margin-bottom: 6px;
}
.chewtoys-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 12px;
}
.chewtoy-card {
background: var(--bg-dark, #151820);
border: 1px solid var(--border, #282b36);
border-radius: var(--radius, 6px);
padding: 12px;
display: flex;
flex-direction: column;
justify-content: space-between;
gap: 10px;
transition: all 0.15s ease;
}
.chewtoy-card:hover {
border-color: rgba(245, 158, 11, 0.5);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}
.chewtoy-card-header {
display: flex;
align-items: flex-start;
gap: 10px;
}
.chewtoy-card-icon {
width: 32px;
height: 32px;
min-width: 32px;
object-fit: contain;
border-radius: 4px;
}
.chewtoy-card-title {
font-weight: 700;
font-size: 13px;
color: var(--text-main);
display: flex;
align-items: center;
gap: 6px;
flex-wrap: wrap;
}
.chewtoy-card-desc {
font-size: 11.5px;
color: var(--text-dim, #9ca3af);
line-height: 1.4;
margin-top: 2px;
}
.chewtoy-perm-tag {
display: inline-block;
font-family: var(--font-mono, monospace);
font-size: 10px;
padding: 1px 5px;
border-radius: 3px;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.1);
color: #38bdf8;
}
.chewtoy-perm-tag.perm-pty {
background: rgba(239, 68, 68, 0.12);
border-color: rgba(239, 68, 68, 0.3);
color: #ef4444;
}
.chewtoy-perm-tag.perm-fs {
background: rgba(16, 185, 129, 0.12);
border-color: rgba(16, 185, 129, 0.3);
color: #10b981;
}
.floating-chewtoy-window {
position: fixed;
top: 60px;
left: 90px;
width: min(880px, calc(100vw - 40px));
height: min(600px, calc(100vh - 80px));
max-width: 100vw;
max-height: 100vh;
min-width: 300px;
min-height: 240px;
background: var(--bg-panel, #1e1e24);
border: 1px solid var(--border, #2e2e3a);
border-radius: var(--radius-lg, 8px);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(255, 255, 255, 0.08);
display: flex;
flex-direction: column;
z-index: 1650;
overflow: hidden;
resize: both;
}
.floating-chewtoy-window.maximized {
top: 40px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 72px) !important;
border-radius: 0 !important;
resize: none !important;
}
.dynamic-chewtoy-box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background: var(--bg-panel, #1e1e24);
overflow: hidden;
}
.floating-chewtoy-window:focus,
.floating-chewtoy-window:focus-visible,
.dynamic-chewtoy-box:focus,
.dynamic-chewtoy-box:focus-visible,
.dynamic-chewtoy-body iframe,
.dynamic-chewtoy-body iframe:focus,
.dynamic-chewtoy-body iframe:focus-visible {
outline: none !important;
border: none !important;
}
.spotlight-grep-snippet {
font-family: var(--font-mono);
font-size: 11px;
line-height: 1.4;
background: rgba(0, 0, 0, 0.25);
border: 1px solid var(--border);
border-radius: 4px;
padding: 3px 6px;
margin-top: 4px;
color: var(--text-muted);
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.spotlight-grep-snippet mark {
background: rgba(245, 158, 11, 0.35);
color: var(--accent);
padding: 0 2px;
border-radius: 2px;
font-weight: 600;
}
.spotlight-line-badge {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 700;
color: var(--accent);
margin-right: 4px;
opacity: 0.9;
}
.floating-splitter-window {
position: fixed;
top: 90px;
left: max(8px, calc(50% - 245px));
width: min(490px, calc(100% - 24px));
height: min(490px, calc(100vh - 100px));
min-width: 340px;
min-height: 380px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-splitter-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.floating-splitter-window.drag-over {
border-color: var(--accent) !important;
box-shadow: 0 0 20px rgba(245, 158, 11, 0.35) !important;
}
.splitter-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
flex-shrink: 0;
}
.splitter-header:active {
cursor: grabbing;
}
.splitter-pill {
position: fixed;
bottom: 8px;
right: 210px;
background: var(--bg-panel);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 4px 10px;
display: flex;
align-items: center;
gap: 6px;
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
cursor: pointer;
z-index: 2800;
transition: all 0.2s ease;
}
.splitter-pill:hover {
background: var(--bg-hover);
transform: translateY(-1px);
}
.floating-pdf-window {
position: fixed;
top: 80px;
left: max(8px, calc(50% - 290px));
width: min(580px, calc(100% - 24px));
height: min(540px, calc(100vh - 90px));
min-width: 360px;
min-height: 400px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-pdf-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.floating-pdf-window.drag-over {
border-color: var(--accent) !important;
box-shadow: 0 0 20px rgba(245, 158, 11, 0.35) !important;
}
.pdf-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
flex-shrink: 0;
}
.pdf-header:active {
cursor: grabbing;
}
.pdf-pill {
position: fixed;
bottom: 8px;
right: 330px;
background: var(--bg-panel);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 4px 10px;
display: flex;
align-items: center;
gap: 6px;
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
cursor: pointer;
z-index: 2800;
transition: all 0.2s ease;
}
.pdf-pill:hover {
background: var(--bg-hover);
transform: translateY(-1px);
}
.floating-shares-window {
position: fixed;
top: 70px;
left: max(8px, calc(50% - 390px));
width: min(780px, calc(100% - 24px));
height: min(580px, calc(100vh - 90px));
min-width: 420px;
min-height: 360px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-shares-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.floating-shares-window.drag-over {
border-color: var(--accent) !important;
box-shadow: 0 0 20px rgba(245, 158, 11, 0.35) !important;
}
.shares-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
flex-shrink: 0;
}
.shares-header:active {
cursor: grabbing;
}
.shares-pill {
position: fixed;
bottom: 8px;
right: 450px;
background: var(--bg-panel);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 4px 10px;
display: flex;
align-items: center;
gap: 6px;
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
cursor: pointer;
z-index: 2800;
transition: all 0.2s ease;
}
.shares-pill:hover {
background: var(--bg-hover);
transform: translateY(-1px);
}
.floating-diskusage-window {
position: fixed;
top: 60px;
left: max(8px, calc(50% - 440px));
width: min(880px, calc(100% - 24px));
height: min(640px, calc(100vh - 80px));
min-width: 480px;
min-height: 400px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-diskusage-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.floating-diskusage-window.drag-over {
border-color: var(--accent) !important;
box-shadow: 0 0 20px rgba(245, 158, 11, 0.35) !important;
}
.du-modal-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
flex-shrink: 0;
}
.du-modal-header:active {
cursor: grabbing;
}
.diskusage-pill {
position: fixed;
bottom: 8px;
right: 570px;
background: var(--bg-panel);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 4px 10px;
display: flex;
align-items: center;
gap: 6px;
font-size: 11px;
font-weight: 600;
color: var(--text-main);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
cursor: pointer;
z-index: 2800;
transition: all 0.2s ease;
}
.diskusage-pill:hover {
background: var(--bg-hover);
transform: translateY(-1px);
}
.floating-renamer-window {
position: fixed;
top: 75px;
left: max(8px, calc(50% - 360px));
width: min(720px, calc(100% - 24px));
height: min(560px, calc(100vh - 85px));
min-width: 320px;
min-height: 320px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-renamer-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.renamer-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
}
.renamer-header:active {
cursor: grabbing;
}
.renamer-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
background: var(--bg-panel);
}
.renamer-config-panel {
padding: 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
flex-direction: column;
gap: 8px;
flex-shrink: 0;
}
.renamer-source-bar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.renamer-rules-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
}
.renamer-rule-col {
display: flex;
flex-direction: column;
gap: 3px;
}
.renamer-field-label {
font-size: 10.5px;
font-weight: 600;
color: var(--text-muted);
}
.renamer-options-row {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.renamer-checkbox-label {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 11px;
color: var(--text-main);
cursor: pointer;
}
.renamer-select {
height: 24px;
padding: 0 6px;
font-size: 11px;
}
.renamer-tokens-bar {
display: flex;
align-items: center;
gap: 6px;
padding-top: 4px;
border-top: 1px dashed var(--border);
}
.renamer-tokens-chips {
display: flex;
align-items: center;
gap: 4px;
overflow-x: auto;
}
.renamer-token-chip {
padding: 1px 6px;
font-size: 10px;
font-family: var(--font-mono);
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border);
border-radius: 4px;
color: var(--accent);
cursor: pointer;
white-space: nowrap;
}
.renamer-token-chip:hover {
background: rgba(245, 158, 11, 0.15);
border-color: var(--accent);
}
.renamer-preview-container {
flex: 1;
overflow-y: auto;
background: var(--bg-panel);
}
.renamer-table {
width: 100%;
border-collapse: collapse;
font-size: 12px;
}
.renamer-table th {
position: sticky;
top: 0;
background: var(--bg-dark);
padding: 6px 8px;
font-size: 11px;
font-weight: 600;
color: var(--text-dim);
border-bottom: 1px solid var(--border);
text-align: left;
z-index: 2;
}
.renamer-table td {
padding: 6px 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
font-family: var(--font-mono);
font-size: 11.5px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.renamer-table tr:hover {
background: var(--bg-hover);
}
.renamer-table tr.renamer-row-modified td.renamer-col-new {
color: var(--accent);
font-weight: 600;
}
.renamer-table tr.renamer-row-conflict {
background: rgba(239, 68, 68, 0.12);
}
.renamer-table tr.renamer-row-conflict td.renamer-col-new {
color: #ef4444;
font-weight: 700;
}
.renamer-footer-bar {
padding: 8px 12px;
background: var(--bg-dark);
border-top: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
}
.renamer-pill,
.hexeditor-pill,
.duplicates-pill,
.tageditor-pill,
.logviewer-pill {
position: fixed;
bottom: 8px;
z-index: 2900;
display: flex;
align-items: center;
gap: 6px;
padding: 4px 10px;
background: var(--bg-dark);
border: 1px solid var(--border);
border-radius: var(--radius-full, 9999px);
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
cursor: pointer;
font-size: 11px;
font-weight: 600;
color: var(--text-main);
user-select: none;
transition: transform 0.15s ease, border-color 0.15s ease;
}
.renamer-pill {
right: 320px;
}
.hexeditor-pill {
right: 440px;
}
.duplicates-pill {
right: 560px;
}
.tageditor-pill {
right: 680px;
}
.logviewer-pill {
right: 800px;
}
.renamer-pill:hover,
.hexeditor-pill:hover,
.duplicates-pill:hover,
.tageditor-pill:hover,
.logviewer-pill:hover {
transform: translateY(-2px);
border-color: var(--accent);
}
.floating-hexeditor-window {
position: fixed;
top: 65px;
left: max(8px, calc(50% - 420px));
width: min(840px, calc(100% - 24px));
height: min(600px, calc(100vh - 85px));
min-width: 320px;
min-height: 320px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2865;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-hexeditor-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.hexeditor-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
}
.hexeditor-header:active {
cursor: grabbing;
}
.hexeditor-toolbar {
height: 36px;
min-height: 36px;
padding: 0 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
flex-shrink: 0;
}
.hexeditor-body {
flex: 1;
display: flex;
overflow: hidden;
background: var(--bg-panel);
}
.hexeditor-grid-container {
flex: 1;
overflow-y: auto;
font-family: var(--font-mono);
font-size: 12px;
padding: 8px 10px;
background: var(--bg-panel);
outline: none;
user-select: text;
}
.hex-row {
display: flex;
align-items: center;
line-height: 20px;
height: 20px;
gap: 12px;
}
.hex-row:hover {
background: rgba(255, 255, 255, 0.03);
}
.hex-offset {
color: var(--text-dim);
width: 75px;
flex-shrink: 0;
user-select: none;
}
.hex-bytes {
display: flex;
gap: 5px;
flex-shrink: 0;
}
.hex-byte {
width: 18px;
text-align: center;
cursor: pointer;
border-radius: 2px;
color: var(--text-main);
padding: 0 1px;
}
.hex-byte:hover {
background: rgba(245, 158, 11, 0.2);
color: var(--accent);
}
.hex-byte.selected {
background: var(--accent);
color: #000;
font-weight: 700;
}
.hex-byte.modified {
color: #ef4444;
font-weight: 700;
text-decoration: underline;
}
.hex-ascii {
display: flex;
gap: 1px;
color: var(--text-muted);
border-left: 1px solid var(--border);
padding-left: 10px;
}
.hex-ascii-char {
width: 8.5px;
text-align: center;
cursor: pointer;
}
.hex-ascii-char.selected {
background: var(--accent);
color: #000;
font-weight: 700;
}
.hex-ascii-char.modified {
color: #ef4444;
font-weight: 700;
}
.hexeditor-inspector-panel {
width: 220px;
background: var(--bg-dark);
border-left: 1px solid var(--border);
padding: 10px;
display: flex;
flex-direction: column;
overflow-y: auto;
flex-shrink: 0;
}
.hex-inspector-section-title {
font-size: 10.5px;
font-weight: 700;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 6px;
letter-spacing: 0.5px;
}
.hex-inspector-grid {
display: grid;
grid-template-columns: 60px 1fr;
gap: 4px 6px;
font-size: 11px;
margin-bottom: 8px;
}
.hex-insp-label {
color: var(--text-dim);
font-weight: 600;
}
.hex-insp-val {
color: var(--text-main);
font-family: var(--font-mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.hexeditor-statusbar {
height: 26px;
min-height: 26px;
padding: 0 10px;
background: var(--bg-dark);
border-top: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
font-size: 11px;
color: var(--text-muted);
flex-shrink: 0;
}
.floating-duplicates-window {
position: fixed;
top: 75px;
left: max(8px, calc(50% - 400px));
width: min(800px, calc(100% - 24px));
height: min(600px, calc(100vh - 85px));
min-width: 320px;
min-height: 320px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-duplicates-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.duplicates-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
}
.duplicates-header:active {
cursor: grabbing;
}
.duplicates-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
background: var(--bg-panel);
}
.dup-controls-bar {
padding: 8px 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
flex-direction: column;
gap: 7px;
flex-shrink: 0;
}
.dup-path-row {
display: flex;
align-items: center;
gap: 6px;
width: 100%;
}
.dup-path-input-wrap {
flex: 1;
display: flex;
align-items: center;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 0 8px;
height: 26px;
box-sizing: border-box;
}
.dup-path-input-wrap:focus-within {
border-color: var(--accent);
box-shadow: 0 0 0 1px var(--accent);
}
.dup-path-icon {
width: 13px;
height: 13px;
color: var(--accent);
margin-right: 6px;
flex-shrink: 0;
}
.dup-path-input {
flex: 1;
background: transparent;
border: none;
outline: none;
font-size: 11.5px;
color: var(--text-main);
font-family: var(--font-mono), monospace;
width: 100%;
padding: 0;
}
.dup-criteria-row {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.dup-criterion-item {
display: flex;
align-items: center;
gap: 5px;
}
.dup-label {
font-size: 11px;
font-weight: 600;
color: var(--text-dim);
white-space: nowrap;
}
.dup-select {
height: 26px;
font-size: 11.5px;
background: var(--bg-card);
color: var(--text-main);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 0 6px;
outline: none;
cursor: pointer;
}
.dup-select:focus {
border-color: var(--accent);
}
.dup-presets-bar {
display: flex;
align-items: center;
gap: 4px;
flex-wrap: wrap;
padding: 4px 0 0 0;
border-top: 1px solid rgba(255, 255, 255, 0.05);
}
.dup-empty-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
color: var(--text-dim);
gap: 8px;
padding: 24px;
}
.dup-group-card {
margin: 8px 10px;
border: 1px solid var(--border);
border-radius: 6px;
background: var(--bg-card);
overflow: hidden;
}
.dup-group-header {
padding: 6px 10px;
background: rgba(255, 255, 255, 0.03);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
font-size: 11.5px;
font-weight: 600;
}
.dup-group-files {
display: flex;
flex-direction: column;
}
.dup-file-row {
padding: 6px 10px;
display: flex;
align-items: center;
gap: 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
font-size: 12px;
transition: background 0.1s ease;
}
.dup-file-row:last-child {
border-bottom: none;
}
.dup-file-row.flagged-delete {
background: rgba(239, 68, 68, 0.08);
}
.dup-file-row:hover {
background: var(--bg-hover);
}
.dup-footer-bar {
height: 42px;
min-height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-top: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
}
.floating-tageditor-window {
position: fixed;
top: 75px;
left: max(8px, calc(50% - 420px));
width: min(840px, calc(100% - 24px));
height: min(580px, calc(100vh - 85px));
min-width: 320px;
min-height: 320px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-tageditor-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.tageditor-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
}
.tageditor-header:active {
cursor: grabbing;
}
.tageditor-body {
flex: 1;
display: flex;
overflow: hidden;
background: var(--bg-panel);
}
.tageditor-file-list-col {
width: 240px;
min-width: 180px;
border-right: 1px solid var(--border);
background: var(--bg-dark);
display: flex;
flex-direction: column;
overflow: hidden;
}
.tageditor-main-col {
flex: 1;
display: flex;
flex-direction: column;
overflow-y: auto;
padding: 12px;
gap: 12px;
}
.tageditor-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px 12px;
}
.tageditor-art-box {
width: 110px;
height: 110px;
border: 1px dashed var(--border);
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.2);
cursor: pointer;
position: relative;
overflow: hidden;
}
.tageditor-art-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.floating-logviewer-window {
position: fixed;
top: 75px;
left: max(8px, calc(50% - 440px));
width: min(880px, calc(100% - 24px));
height: min(600px, calc(100vh - 85px));
min-width: 320px;
min-height: 320px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 40px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(245, 158, 11, 0.15);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-logviewer-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.logviewer-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
}
.logviewer-header:active {
cursor: grabbing;
}
.logviewer-toolbar {
padding: 6px 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
flex-shrink: 0;
}
.logviewer-console {
flex: 1;
background: #0d1117;
color: #c9d1d9;
font-family: var(--font-mono), monospace;
font-size: 11.5px;
line-height: 1.45;
overflow: auto;
padding: 8px;
user-select: text;
}
.log-line {
display: flex;
gap: 8px;
padding: 1px 4px;
border-radius: 3px;
white-space: pre-wrap;
word-break: break-all;
}
.log-line:hover {
background: rgba(255, 255, 255, 0.05);
}
.log-line-num {
color: var(--text-dim);
width: 48px;
text-align: right;
user-select: none;
flex-shrink: 0;
}
.log-badge {
font-size: 9.5px;
font-weight: 700;
padding: 0 4px;
border-radius: 3px;
text-transform: uppercase;
user-select: none;
flex-shrink: 0;
}
.log-badge-fatal, .log-badge-error {
background: rgba(239, 68, 68, 0.2);
color: #ef4444;
border: 1px solid rgba(239, 68, 68, 0.4);
}
.log-badge-warn {
background: rgba(245, 158, 11, 0.2);
color: #f59e0b;
border: 1px solid rgba(245, 158, 11, 0.4);
}
.log-badge-info {
background: rgba(56, 189, 248, 0.15);
color: #38bdf8;
border: 1px solid rgba(56, 189, 248, 0.3);
}
.log-badge-debug, .log-badge-trace {
background: rgba(148, 163, 184, 0.15);
color: #94a3b8;
border: 1px solid rgba(148, 163, 184, 0.3);
}
.log-timestamp {
color: #8b949e;
font-size: 10.5px;
flex-shrink: 0;
}
.log-text {
flex: 1;
}
@media (max-width: 1024px) {
.floating-splitter-window,
.floating-pdf-window,
.floating-shares-window,
.floating-diskusage-window,
.floating-cad-window,
.floating-renamer-window,
.floating-hexeditor-window,
.floating-duplicates-window,
.floating-tageditor-window,
.floating-logviewer-window {
width: calc(100vw - 20px) !important;
max-width: calc(100vw - 20px) !important;
left: 10px !important;
top: 48px !important;
height: calc(100vh - 65px) !important;
max-height: calc(100vh - 65px) !important;
min-width: 0 !important;
}
.tageditor-file-list-col {
width: 200px;
min-width: 160px;
}
}
@media (max-width: 768px) {
.floating-splitter-window,
.floating-pdf-window,
.floating-shares-window,
.floating-diskusage-window,
.floating-cad-window,
.floating-renamer-window,
.floating-hexeditor-window,
.floating-duplicates-window,
.floating-tageditor-window,
.floating-logviewer-window {
top: 36px !important;
left: 0 !important;
width: 100vw !important;
height: calc(100vh - 36px) !important;
max-width: 100vw !important;
max-height: calc(100vh - 36px) !important;
min-width: 0 !important;
min-height: 0 !important;
border-radius: 0 !important;
border-left: none !important;
border-right: none !important;
border-bottom: none !important;
}
.floating-splitter-window .win-resize-handle,
.floating-pdf-window .win-resize-handle,
.floating-shares-window .win-resize-handle,
.floating-diskusage-window .win-resize-handle,
.floating-cad-window .win-resize-handle,
.floating-renamer-window .win-resize-handle,
.floating-hexeditor-window .win-resize-handle,
.floating-duplicates-window .win-resize-handle,
.floating-tageditor-window .win-resize-handle,
.floating-logviewer-window .win-resize-handle {
display: none !important;
}
.tageditor-body {
flex-direction: column !important;
}
.tageditor-file-list-col {
width: 100% !important;
min-width: 100% !important;
max-height: 120px !important;
border-right: none !important;
border-bottom: 1px solid var(--border) !important;
flex-shrink: 0 !important;
}
.tageditor-main-col {
padding: 8px !important;
gap: 8px !important;
}
.tageditor-form-grid {
grid-template-columns: 1fr !important;
gap: 8px !important;
}
.tageditor-art-box {
width: 80px !important;
height: 80px !important;
}
.hexeditor-inspector-panel {
display: none;
}
.hexeditor-inspector-panel.mobile-active {
display: flex !important;
position: absolute;
bottom: 0;
left: 0;
width: 100% !important;
max-height: 45%;
z-index: 10;
border-left: none !important;
border-top: 1px solid var(--border) !important;
box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.6);
}
.dup-controls-bar {
padding: 6px 8px !important;
gap: 6px !important;
}
.dup-criteria-row {
gap: 6px !important;
}
.dup-criteria-row #btn-start-dup-scan {
width: 100% !important;
margin-left: 0 !important;
margin-top: 2px !important;
}
.dup-footer-bar {
height: auto !important;
min-height: 42px !important;
padding: 6px 8px !important;
flex-direction: column !important;
align-items: stretch !important;
gap: 6px !important;
}
.dup-footer-bar > div {
width: 100% !important;
justify-content: space-between !important;
}
.renamer-rules-grid {
grid-template-columns: 1fr !important;
}
.renamer-footer-bar {
height: auto !important;
min-height: 42px !important;
padding: 6px 8px !important;
flex-direction: column !important;
align-items: stretch !important;
gap: 6px !important;
}
.renamer-footer-bar > div {
width: 100% !important;
justify-content: space-between !important;
}
.logviewer-toolbar {
padding: 6px 8px !important;
gap: 6px !important;
}
.logviewer-console {
padding: 4px 6px !important;
font-size: 10.5px !important;
}
.log-line {
gap: 4px !important;
padding: 2px 2px !important;
}
.log-line-num {
width: 32px !important;
font-size: 9.5px !important;
}
.log-timestamp {
font-size: 9.5px !important;
}
.splitter-pill,
.pdf-pill,
.shares-pill,
.diskusage-pill,
.renamer-pill,
.hexeditor-pill,
.duplicates-pill,
.tageditor-pill,
.logviewer-pill,
.cad-pill {
right: auto !important;
left: 8px !important;
bottom: 8px !important;
max-width: calc(100vw - 16px);
}
}
.floating-cad-window {
position: fixed;
top: 65px;
left: max(8px, calc(50% - 480px));
width: min(960px, calc(100% - 24px));
height: min(650px, calc(100vh - 75px));
min-width: 340px;
min-height: 340px;
max-width: calc(100% - 16px);
max-height: calc(100vh - 36px);
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(245, 158, 11, 0.18);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.floating-cad-window.maximized {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.cad-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
flex-shrink: 0;
}
.cad-header:active {
cursor: grabbing;
}
.cad-toolbar {
padding: 5px 10px;
background: var(--bg-header);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
gap: 6px;
flex-wrap: wrap;
flex-shrink: 0;
}
.cad-toolbar-group {
display: flex;
align-items: center;
gap: 4px;
}
.cad-toolbar-divider {
width: 1px;
height: 18px;
background: var(--border);
margin: 0 2px;
}
.cad-viewport-container {
flex: 1;
position: relative;
background: radial-gradient(circle at center, #1c1d22 0%, #0e0f13 100%);
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
min-height: 200px;
}
.cad-webgl-canvas {
width: 100% !important;
height: 100% !important;
display: block;
outline: none;
cursor: grab;
}
.cad-webgl-canvas:active {
cursor: grabbing;
}
.cad-hud-top-left {
position: absolute;
top: 10px;
left: 10px;
pointer-events: none;
z-index: 10;
display: flex;
flex-direction: column;
gap: 6px;
}
.cad-hud-badge {
background: rgba(18, 18, 20, 0.85);
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 6px;
padding: 4px 8px;
font-family: var(--font-mono), monospace;
font-size: 11px;
color: var(--text-main);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
.cad-hud-bottom-right {
position: absolute;
bottom: 10px;
right: 10px;
pointer-events: none;
z-index: 10;
}
.cad-hud-telemetry {
background: rgba(18, 18, 20, 0.85);
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 6px;
padding: 6px 10px;
font-family: var(--font-mono), monospace;
font-size: 10.5px;
color: var(--text-main);
display: flex;
flex-direction: column;
gap: 3px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
min-width: 140px;
}
.cad-stat-label {
color: var(--text-muted);
margin-right: 4px;
}
.cad-stat-val {
color: var(--accent);
font-weight: 600;
}
.cad-loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(14, 15, 19, 0.85);
backdrop-filter: blur(6px);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 20;
}
.cad-spin {
animation: cad-spin-anim 1s linear infinite;
}
@keyframes cad-spin-anim {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.cad-pill {
position: fixed;
bottom: 12px;
right: 12px;
background: var(--bg-panel);
border: 1px solid var(--accent);
border-radius: 20px;
padding: 6px 12px;
display: flex;
align-items: center;
gap: 6px;
cursor: pointer;
z-index: 9990;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6), 0 0 10px var(--accent-glow);
font-size: 12px;
font-weight: 600;
color: var(--text-main);
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.cad-pill:hover {
transform: translateY(-2px);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.7), 0 0 16px var(--accent-glow);
}
.cad-pill-title {
max-width: 160px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.docked-cad-box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
background: var(--bg-panel);
}
@media (max-width: 1024px) {
.floating-cad-window {
top: 36px !important;
left: 0 !important;
right: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: calc(100vh - 36px) !important;
border-radius: 0 !important;
}
.cad-hud-telemetry {
font-size: 9.5px;
padding: 4px 6px;
}
}
.floating-converter-window {
position: fixed;
top: 90px;
left: max(16px, calc(50% - 260px));
width: min(520px, calc(100% - 32px));
max-height: min(720px, calc(100vh - 110px));
min-width: 320px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: var(--radius-lg, 10px);
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(245, 158, 11, 0.18);
display: flex;
flex-direction: column;
z-index: 2860;
overflow: hidden;
font-family: var(--font-sans), sans-serif;
user-select: none;
}
.converter-header {
min-height: 42px;
height: 42px;
padding: 0 10px;
background: var(--bg-dark);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
cursor: grab;
flex-shrink: 0;
}
.converter-header:active {
cursor: grabbing;
}
.converter-dropzone {
background: var(--bg-input);
border: 2px dashed rgba(255, 255, 255, 0.12);
border-radius: var(--radius, 8px);
padding: 12px 14px;
cursor: pointer;
transition: all 0.2s ease;
display: flex;
align-items: center;
justify-content: center;
min-height: 85px;
}
.converter-dropzone:hover {
background: var(--bg-hover);
border-color: rgba(245, 158, 11, 0.4);
}
.converter-dropzone.drag-over {
background: rgba(245, 158, 11, 0.12) !important;
border-color: var(--accent) !important;
box-shadow: 0 0 14px rgba(245, 158, 11, 0.25);
}
.converter-file-picker-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 10px;
border-radius: 4px;
cursor: pointer;
font-size: 11.5px;
transition: background 0.12s ease;
}
.converter-file-picker-row:hover {
background: var(--bg-hover);
color: var(--accent);
}
@media (max-width: 600px) {
.floating-converter-window {
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
height: 100dvh !important;
max-width: 100vw !important;
max-height: 100dvh !important;
border-radius: 0 !important;
border: none !important;
box-shadow: none !important;
z-index: 2800 !important;
}
}