/* ═══════════════════════════════════════════════════════════════
   ADVLAB Cloud — advcloud.css
   Apple Business + Glassmorphism + Bootstrap 5 + Google Drive UI
   Dark default · Light via html[data-theme="light"]
   ═══════════════════════════════════════════════════════════════ */

/* ── THEME TOKENS ──────────────────────────────────────────────── */
:root,
html[data-theme="dark"] {
  --ac-bg:           #070a13;
  --ac-bg-gradient:  radial-gradient(1100px 600px at 18% -8%, rgba(90,120,255,.16), transparent 55%),
                     radial-gradient(800px 500px at 88% 8%,  rgba(0,220,160,.08),  transparent 50%),
                     linear-gradient(180deg, #070a13 0%, #060912 100%);
  --ac-card:         rgba(12,18,38,.55);
  --ac-card-s:       rgba(12,18,38,.82);
  --ac-card-hover:   rgba(18,28,56,.72);
  --ac-stroke:       rgba(255,255,255,.09);
  --ac-stroke-s:     rgba(255,255,255,.15);
  --ac-text:         rgba(240,244,255,.93);
  --ac-muted:        rgba(240,244,255,.54);
  --ac-faint:        rgba(240,244,255,.28);
  --ac-blue:         #0A84FF;
  --ac-blue-h:       #3fa7ff;
  --ac-green:        #34C759;
  --ac-red:          #FF3B30;
  --ac-yellow:       #FFD60A;
  --ac-orange:       #FF9500;
  --ac-purple:       #BF5AF2;
  --ac-cyan:         #64D2FF;
  --ac-shadow:       0 20px 58px rgba(0,0,0,.52);
  --ac-shadow-s:     0 8px 26px rgba(0,0,0,.36);
  --ac-shadow-xs:    0 4px 12px rgba(0,0,0,.24);
  --ac-r:            18px;
  --ac-r-sm:         12px;
  --ac-r-lg:         24px;
  --ac-r-pill:       999px;
  --ac-blur:         18px;
  --ac-t:            160ms cubic-bezier(.2,.8,.2,1);
  /* Bootstrap mapping */
  --bs-body-bg:      transparent;
  --bs-body-color:   var(--ac-text);
  --bs-border-color: var(--ac-stroke);
}

html[data-theme="light"] {
  --ac-bg:          #f5f5f7;
  --ac-bg-gradient: linear-gradient(180deg,#f5f5f7 0%,#ebebf0 100%);
  --ac-card:        rgba(255,255,255,.78);
  --ac-card-s:      rgba(255,255,255,.94);
  --ac-card-hover:  rgba(255,255,255,.98);
  --ac-stroke:      rgba(0,0,0,.09);
  --ac-stroke-s:    rgba(0,0,0,.14);
  --ac-text:        #1d1d1f;
  --ac-muted:       #6e6e73;
  --ac-faint:       rgba(0,0,0,.30);
  --ac-shadow:      0 18px 42px rgba(0,0,0,.11);
  --ac-shadow-s:    0 8px 22px rgba(0,0,0,.08);
  --ac-shadow-xs:   0 3px 10px rgba(0,0,0,.06);
  --bs-body-bg:     var(--ac-bg);
  --bs-body-color:  var(--ac-text);
  --bs-border-color:var(--ac-stroke);
}

/* ── RESET / BASE ──────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html, body {
  height: 100%;
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
}

body {
  background: var(--ac-bg-gradient);
  background-color: var(--ac-bg);
  color: var(--ac-text);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100vh;
}

a { color: var(--ac-blue); text-decoration: none; }
a:hover { color: var(--ac-blue-h); }

/* ── APP SHELL ─────────────────────────────────────────────────── */
.app-shell {
  display: flex;
  min-height: 100vh;
}

.main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.content { flex: 1; padding: 20px; }
.content-inner { max-width: 1440px; margin: 0 auto; }


/* ── LEGACY PAGE COMPATIBILITY (shared.php, transfer.php, profile.php, admin legacy) ── */
.layout {
  display: flex;
  min-height: 100vh;
}

.layout > .main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: stretch;
  gap: 18px;
  padding: 24px 28px 32px;
}

.app-shell > .main {
  padding: 0;
  gap: 0;
}

.layout > .main .page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0;
}

.layout > .main .empty-state {
  justify-content: flex-start;
  padding: 42px 20px 28px;
  min-height: 0;
}

.layout > .main .table-wrap,
.layout > .main .card,
.layout > .main .stats-grid,
.layout > .main .transfer-list,
.layout > .main .file-grid,
.layout > .main .quota-bar-wrap,
.layout > .main .alert,
.layout > .main .ftp-guide,
.layout > .main .table-responsive {
  width: 100%;
}

.layout > .main .table-wrap,
.layout > .main .card,
.layout > .main .ftp-guide {
  margin-top: 0 !important;
}

@media (max-width: 991.98px) {
  .layout {
    display: block;
  }
  .layout > .main {
    padding: 14px 14px 24px;
  }
}

/* ── SIDEBAR ───────────────────────────────────────────────────── */
.sidebar {
  width: 260px;
  flex: 0 0 260px;
  height: 100vh;
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(10,14,28,.94) 0%, rgba(8,11,22,.97) 100%);
  border-right: 1px solid var(--ac-stroke);
  backdrop-filter: blur(var(--ac-blur));
  -webkit-backdrop-filter: blur(var(--ac-blur));
  z-index: 100;
}

html[data-theme="light"] .sidebar {
  background: linear-gradient(180deg, rgba(255,255,255,.90) 0%, rgba(248,248,252,.95) 100%);
}

/* Brand */
.sidebar-brand {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 20px 16px 16px;
  border-bottom: 1px solid var(--ac-stroke);
}

.sidebar-brand-logo {
  height: 32px;
  width: auto;
  object-fit: contain;
}

.sidebar-brand-main {
  display: flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
}

.sidebar-brand-tools {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 0 0 auto;
}

.sidebar-brand-logo {
  max-width: 100%;
  min-width: 0;
}

.brand-logo--light { display: none; }
.brand-logo--dark  { display: block; }
html[data-theme="light"] .brand-logo--light { display: block; }
html[data-theme="light"] .brand-logo--dark  { display: none; }

.sidebar-brand-name {
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ac-text);
  line-height: 1.1;
}
.sidebar-brand-sub {
  font-size: 10px;
  color: var(--ac-muted);
  font-weight: 500;
  margin-top: 2px;
}

/* Nav */
.sidebar-nav {
  flex: 1 1 auto;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 12px 10px;
  scrollbar-width: none;
}
.sidebar-nav::-webkit-scrollbar { display: none; }

.nav-section-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .10em;
  text-transform: uppercase;
  color: var(--ac-faint);
  padding: 12px 8px 4px;
}

.side-link {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 11px;
  margin: 2px 0;
  border-radius: var(--ac-r-sm);
  text-decoration: none;
  color: var(--ac-muted);
  font-size: 13.5px;
  font-weight: 600;
  border: 1px solid transparent;
  transition: all var(--ac-t);
  position: relative;
  cursor: pointer;
  background: transparent;
  width: 100%;
  text-align: left;
}

.side-link:hover {
  background: rgba(255,255,255,.06);
  color: var(--ac-text);
  border-color: var(--ac-stroke);
}

html[data-theme="light"] .side-link:hover {
  background: rgba(0,0,0,.04);
}

.side-link.active {
  background: rgba(10,132,255,.14);
  border-color: rgba(10,132,255,.25);
  color: var(--ac-text);
}

html[data-theme="light"] .side-link.active {
  background: rgba(10,132,255,.10);
}

.side-link .side-ic {
  width: 32px;
  height: 32px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: rgba(255,255,255,.06);
  border: 1px solid var(--ac-stroke);
  transition: all var(--ac-t);
}

html[data-theme="light"] .side-link .side-ic {
  background: rgba(0,0,0,.04);
}

.side-link.active .side-ic {
  background: rgba(10,132,255,.20);
  border-color: rgba(10,132,255,.30);
}

.side-link .side-ic i, .side-link .side-ic svg {
  width: 15px;
  height: 15px;
}

.side-link .side-tx { flex: 1; }

.side-sep {
  height: 1px;
  background: var(--ac-stroke);
  margin: 8px 4px;
}

/* Sidebar quota */
.sidebar-quota {
  flex-shrink: 0;
  padding: 14px 16px;
  border-top: 1px solid var(--ac-stroke);
}

.quota-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 11px;
  color: var(--ac-muted);
  margin-bottom: 6px;
}

.quota-bar {
  height: 4px;
  background: var(--ac-stroke-s);
  border-radius: 99px;
  overflow: hidden;
}

.quota-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--ac-blue), var(--ac-cyan));
  border-radius: 99px;
  transition: width .4s ease;
}

.quota-fill.quota-warn {
  background: linear-gradient(90deg, var(--ac-orange), var(--ac-red));
}

/* Sidebar user */
.sidebar-user {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-top: 1px solid var(--ac-stroke);
}

.user-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--ac-blue), var(--ac-purple));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 800;
  color: #fff;
  flex-shrink: 0;
}

.user-avatar.sm { width: 26px; height: 26px; font-size: 10px; }
.user-avatar.lg { width: 48px; height: 48px; font-size: 17px; }

.user-info { flex: 1; min-width: 0; }
.user-name { font-size: 13px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-role { font-size: 11px; color: var(--ac-muted); }

/* ── TOPBAR ────────────────────────────────────────────────────── */
.topbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--ac-stroke);
  background: var(--ac-card);
  backdrop-filter: blur(var(--ac-blur));
  -webkit-backdrop-filter: blur(var(--ac-blur));
  flex-shrink: 0;
  position: sticky;
  top: 0;
  z-index: 50;
}

.topbar-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
  flex: 0 1 auto;
  max-width: 100%;
  min-width: 0;
}

.topbar-search {
  position: relative;
  width: min(320px, 100%);
  min-width: 200px;
  flex: 1 1 260px;
}

.topbar-search .form-control {
  width: 100%;
  padding-left: 32px;
}

.topbar-search-icon {
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 13px;
  height: 13px;
  color: var(--ac-muted);
  pointer-events: none;
}

/* ── BREADCRUMB ────────────────────────────────────────────────── */
.breadcrumb-wrap {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 1;
  min-width: 0;
  overflow: hidden;
}

.bc-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ac-muted);
  text-decoration: none;
  white-space: nowrap;
  padding: 4px 8px;
  border-radius: 8px;
  transition: all var(--ac-t);
}

.bc-link:hover { background: var(--ac-card-hover); color: var(--ac-text); }
.bc-link.active { color: var(--ac-text); }
.bc-sep { color: var(--ac-faint); font-size: 14px; }

/* ── BUTTONS ───────────────────────────────────────────────────── */
.btn {
  border-radius: var(--ac-r-pill) !important;
  font-weight: 600;
  font-size: 13px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  transition: all var(--ac-t);
}

.btn-primary {
  background: linear-gradient(180deg, #0A84FF, #006ed4) !important;
  border: none !important;
  color: #fff !important;
  box-shadow: 0 8px 24px rgba(10,132,255,.28);
}

.btn-primary:hover {
  filter: brightness(1.06);
  transform: translateY(-1px);
  box-shadow: 0 12px 30px rgba(10,132,255,.35) !important;
}

.btn-ghost {
  background: var(--ac-card) !important;
  border: 1px solid var(--ac-stroke) !important;
  color: var(--ac-text) !important;
  backdrop-filter: blur(10px);
}

.btn-ghost:hover {
  background: var(--ac-card-hover) !important;
  border-color: var(--ac-stroke-s) !important;
  transform: translateY(-1px);
  box-shadow: var(--ac-shadow-xs) !important;
}

.btn-danger {
  background: linear-gradient(180deg, #FF3B30, #cc2a20) !important;
  border: none !important;
  color: #fff !important;
}

.btn-sm { padding: 6px 14px !important; font-size: 12px !important; }
.btn-lg { padding: 12px 24px !important; font-size: 14px !important; }
.btn-full { width: 100%; justify-content: center; }

/* Icon-only button */
.btn-icon {
  width: 32px;
  height: 32px;
  border-radius: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid transparent;
  color: var(--ac-muted);
  cursor: pointer;
  transition: all var(--ac-t);
  flex-shrink: 0;
}

.btn-icon:hover {
  background: var(--ac-card-hover);
  border-color: var(--ac-stroke);
  color: var(--ac-text);
}

.btn-icon.danger:hover { background: rgba(255,59,48,.12); border-color: rgba(255,59,48,.25); color: var(--ac-red); }
.btn-icon i, .btn-icon svg { width: 15px; height: 15px; pointer-events: none; }

/* ── CARDS ─────────────────────────────────────────────────────── */
.card {
  background: var(--ac-card) !important;
  border: 1px solid var(--ac-stroke) !important;
  border-radius: var(--ac-r) !important;
  backdrop-filter: blur(var(--ac-blur));
  -webkit-backdrop-filter: blur(var(--ac-blur));
  box-shadow: var(--ac-shadow-s) !important;
  color: var(--ac-text) !important;
}

.card-body { padding: 20px !important; }

/* ── STATS GRID ────────────────────────────────────────────────── */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}

.stat-card {
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  border-radius: var(--ac-r-sm);
  padding: 16px;
  backdrop-filter: blur(var(--ac-blur));
  transition: transform var(--ac-t);
}

.stat-card:hover { transform: translateY(-2px); }
.stat-label { font-size: 11px; color: var(--ac-muted); font-weight: 600; text-transform: uppercase; letter-spacing: .06em; margin-bottom: 6px; }
.stat-value { font-size: 24px; font-weight: 800; letter-spacing: -.02em; }

/* ── GOOGLE DRIVE FILE GRID ────────────────────────────────────── */
.cloud-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(152px, 1fr));
  gap: 10px;
}

.cloud-grid.list-view {
  grid-template-columns: 1fr;
  gap: 4px;
}

/* File Card */
.cloud-card {
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  border-radius: var(--ac-r-sm);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  cursor: pointer;
  transition: all var(--ac-t);
  position: relative;
  user-select: none;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.cloud-card:hover {
  background: var(--ac-card-hover);
  border-color: var(--ac-stroke-s);
  transform: translateY(-2px);
  box-shadow: var(--ac-shadow-xs);
}

.cloud-card.selected {
  border-color: var(--ac-blue) !important;
  background: rgba(10,132,255,.10) !important;
  box-shadow: 0 0 0 1px rgba(10,132,255,.3);
}

.cloud-card.drop-target {
  border-color: var(--ac-blue) !important;
  background: rgba(10,132,255,.16) !important;
  box-shadow: 0 0 0 2px rgba(10,132,255,.4);
  transform: scale(1.03);
}

/* Card icon area */
.cloud-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px 16px 12px;
  flex-shrink: 0;
}

.file-type-icon {
  width: 56px;
  height: 56px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.file-type-icon i, .file-type-icon svg { width: 26px; height: 26px; }

/* File type colors */
.ic-folder   { background: rgba(10,132,255,.15); color: #0A84FF; border: 1px solid rgba(10,132,255,.2); }
.ic-image    { background: rgba(52,199,89,.15);  color: #34C759; border: 1px solid rgba(52,199,89,.2); }
.ic-video    { background: rgba(191,90,242,.15); color: #BF5AF2; border: 1px solid rgba(191,90,242,.2); }
.ic-audio    { background: rgba(255,149,0,.15);  color: #FF9500; border: 1px solid rgba(255,149,0,.2); }
.ic-pdf      { background: rgba(255,59,48,.15);  color: #FF3B30; border: 1px solid rgba(255,59,48,.2); }
.ic-word     { background: rgba(10,132,255,.15); color: #0A84FF; border: 1px solid rgba(10,132,255,.2); }
.ic-excel    { background: rgba(52,199,89,.15);  color: #34C759; border: 1px solid rgba(52,199,89,.2); }
.ic-ppt      { background: rgba(255,149,0,.15);  color: #FF9500; border: 1px solid rgba(255,149,0,.2); }
.ic-archive  { background: rgba(255,214,10,.15); color: #FFD60A; border: 1px solid rgba(255,214,10,.2); }
.ic-code     { background: rgba(100,210,255,.15);color: #64D2FF; border: 1px solid rgba(100,210,255,.2); }
.ic-file     { background: rgba(142,142,147,.12);color: #8E8E93; border: 1px solid rgba(142,142,147,.18); }

/* Card image thumbnail */
.cloud-card-thumb {
  width: 56px;
  height: 56px;
  border-radius: 10px;
  object-fit: cover;
  border: 1px solid var(--ac-stroke);
}

/* Card info */
.cloud-card-body {
  padding: 0 12px 12px;
  min-width: 0;
}

.cloud-card-name {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ac-text);
  margin-bottom: 3px;
  /* FIX 2026-04-24: nomi cartelle completi leggibili.
     Mostra fino a 3 righe con word-break intelligente, tooltip nativo via title=""  */
  white-space: normal;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  line-clamp: 3;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.3;
  min-height: 0;
}

.cloud-card-meta {
  font-size: 11px;
  color: var(--ac-muted);
}

/* Card actions overlay */
.cloud-card-actions {
  position: absolute;
  top: 6px;
  right: 6px;
  display: flex;
  gap: 3px;
  opacity: 0;
  transition: opacity var(--ac-t);
}

.cloud-card:hover .cloud-card-actions,
.cloud-card.selected .cloud-card-actions {
  opacity: 1;
}

/* ── LIST VIEW ─────────────────────────────────────────────────── */
.cloud-grid.list-view .cloud-card {
  flex-direction: row;
  align-items: center;
  border-radius: 10px;
  padding: 0;
}

.cloud-grid.list-view .cloud-card-icon {
  padding: 10px 14px;
  flex-shrink: 0;
}

.cloud-grid.list-view .file-type-icon { width: 36px; height: 36px; border-radius: 9px; }
.cloud-grid.list-view .file-type-icon i,
.cloud-grid.list-view .file-type-icon svg { width: 17px; height: 17px; }

.cloud-grid.list-view .cloud-card-body {
  flex: 1;
  padding: 10px 0;
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
}

.cloud-grid.list-view .cloud-card-name {
  flex: 1;
  margin: 0;
  min-width: 0;
}

.cloud-grid.list-view .cloud-card-meta {
  white-space: nowrap;
  flex-shrink: 0;
}

.cloud-grid.list-view .cloud-card-actions {
  position: static;
  opacity: 0;
  padding-right: 12px;
  flex-shrink: 0;
}

.cloud-grid.list-view .cloud-card:hover .cloud-card-actions { opacity: 1; }

/* ── UPLOAD ZONE ───────────────────────────────────────────────── */
.upload-zone {
  border: 2px dashed var(--ac-stroke-s);
  border-radius: var(--ac-r);
  padding: 32px 20px;
  text-align: center;
  cursor: pointer;
  transition: all var(--ac-t);
  background: transparent;
}

.upload-zone:hover,
.upload-zone.dragover {
  border-color: var(--ac-blue);
  background: rgba(10,132,255,.06);
}

.upload-zone-icon {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: rgba(10,132,255,.12);
  border: 1px solid rgba(10,132,255,.2);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 14px;
  color: var(--ac-blue);
}

/* ── UPLOAD QUEUE (floating bottom-right) ──────────────────────── */
.upload-queue-panel {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 340px;
  z-index: 1050;
  display: none;
  flex-direction: column;
  gap: 6px;
}

.upload-queue-panel.visible { display: flex; }

.upload-queue-header {
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r-sm) var(--ac-r-sm) 0 0;
  padding: 10px 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 12px;
  font-weight: 700;
  backdrop-filter: blur(18px);
}

.upload-item {
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke);
  border-top: none;
  padding: 10px 14px;
  backdrop-filter: blur(18px);
}

.upload-item:last-child { border-radius: 0 0 var(--ac-r-sm) var(--ac-r-sm); }

.up-name {
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 5px;
}

.up-progress-bar {
  height: 3px;
  background: var(--ac-stroke-s);
  border-radius: 99px;
  overflow: hidden;
  margin-bottom: 5px;
}

.up-progress-fill {
  height: 100%;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--ac-blue), var(--ac-cyan));
  transition: width .2s;
}

.up-meta { display: flex; gap: 10px; font-size: 11px; color: var(--ac-muted); }
.up-status-ok   { color: var(--ac-green); }
.up-status-err  { color: var(--ac-red); }
.up-status-wait { color: var(--ac-muted); }
.up-status-up   { color: var(--ac-blue); }

/* ── MODALS ────────────────────────────────────────────────────── */
.modal-content {
  background: var(--ac-card-s) !important;
  border: 1px solid var(--ac-stroke-s) !important;
  border-radius: var(--ac-r-lg) !important;
  backdrop-filter: blur(var(--ac-blur));
  -webkit-backdrop-filter: blur(var(--ac-blur));
  color: var(--ac-text) !important;
  box-shadow: var(--ac-shadow) !important;
}

.modal-header {
  border-bottom: 1px solid var(--ac-stroke) !important;
  padding: 18px 20px 14px !important;
}

.modal-title { font-size: 15px; font-weight: 700; }

.modal-footer {
  border-top: 1px solid var(--ac-stroke) !important;
  padding: 14px 20px !important;
}

.modal-body { padding: 20px !important; }

.btn-close {
  filter: invert(1) opacity(.6);
  transition: opacity var(--ac-t);
}
.btn-close:hover { opacity: 1; }
html[data-theme="light"] .btn-close { filter: none; }

.modal-backdrop { background: rgba(0,0,0,.6) !important; }

/* ── FORMS ─────────────────────────────────────────────────────── */
.form-label { font-size: 12px; font-weight: 700; color: var(--ac-muted); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 6px; }

.form-control, .form-select {
  background: var(--ac-card) !important;
  border: 1px solid var(--ac-stroke-s) !important;
  border-radius: var(--ac-r-sm) !important;
  color: var(--ac-text) !important;
  font-size: 14px;
  padding: 10px 14px !important;
  transition: border-color var(--ac-t), box-shadow var(--ac-t);
  min-height: 42px;
}

.form-control::placeholder { color: var(--ac-faint) !important; }

.form-control:focus, .form-select:focus {
  border-color: rgba(10,132,255,.5) !important;
  box-shadow: 0 0 0 3px rgba(10,132,255,.15) !important;
  background: var(--ac-card-s) !important;
  outline: none;
}

.form-check-input {
  background-color: var(--ac-card) !important;
  border-color: var(--ac-stroke-s) !important;
  width: 17px; height: 17px;
}

.form-check-input:checked {
  background-color: var(--ac-blue) !important;
  border-color: var(--ac-blue) !important;
}

textarea.form-control { min-height: 100px; resize: vertical; }

/* ── TABLE ─────────────────────────────────────────────────────── */
.table {
  color: var(--ac-text) !important;
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--ac-stroke);
}

.table thead th {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--ac-muted) !important;
  border-bottom: 1px solid var(--ac-stroke) !important;
  padding: 10px 14px !important;
  white-space: nowrap;
  background: transparent !important;
}

.table tbody td {
  padding: 12px 14px !important;
  border-bottom: 1px solid var(--ac-stroke) !important;
  vertical-align: middle;
  font-size: 13px;
}

.table tbody tr { transition: background var(--ac-t); }
.table tbody tr:hover { background: rgba(255,255,255,.04); }
html[data-theme="light"] .table tbody tr:hover { background: rgba(0,0,0,.02); }

/* ── BADGES ────────────────────────────────────────────────────── */
.badge-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 99px;
  font-size: 11px;
  font-weight: 700;
  border: 1px solid;
}

.badge-blue   { background: rgba(10,132,255,.14);  color: #0A84FF;  border-color: rgba(10,132,255,.25); }
.badge-green  { background: rgba(52,199,89,.14);   color: #34C759;  border-color: rgba(52,199,89,.25); }
.badge-red    { background: rgba(255,59,48,.14);   color: #FF3B30;  border-color: rgba(255,59,48,.25); }
.badge-yellow { background: rgba(255,214,10,.14);  color: #c9a800;  border-color: rgba(255,214,10,.30); }
html[data-theme="light"] .badge-yellow { color: #9a7c00; }
.badge-gray   { background: rgba(142,142,147,.12); color: #8E8E93;  border-color: rgba(142,142,147,.20); }
.badge-admin  { background: rgba(191,90,242,.14);  color: #BF5AF2;  border-color: rgba(191,90,242,.25); }

/* ── ALERTS ────────────────────────────────────────────────────── */
.alert {
  border-radius: var(--ac-r-sm) !important;
  font-size: 13px;
  padding: 12px 16px !important;
  border: 1px solid !important;
}

.alert-success { background: rgba(52,199,89,.10) !important;  border-color: rgba(52,199,89,.25)  !important; color: var(--ac-green) !important; }
.alert-danger  { background: rgba(255,59,48,.10)  !important; border-color: rgba(255,59,48,.25)  !important; color: var(--ac-red) !important; }
.alert-warning { background: rgba(255,214,10,.10) !important; border-color: rgba(255,214,10,.25) !important; color: var(--ac-yellow) !important; }
.alert-info    { background: rgba(10,132,255,.10) !important; border-color: rgba(10,132,255,.25) !important; color: var(--ac-blue) !important; }

/* ── CONTEXT MENU ──────────────────────────────────────────────── */
.ctx-menu {
  position: fixed;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r-sm);
  padding: 6px;
  min-width: 186px;
  box-shadow: var(--ac-shadow);
  z-index: 9999;
  backdrop-filter: blur(var(--ac-blur));
  animation: ctx-in .12s ease;
}

@keyframes ctx-in {
  from { opacity:0; transform: scale(.95) translateY(-4px); }
  to   { opacity:1; transform: scale(1)   translateY(0); }
}

.ctx-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 9px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  color: var(--ac-text);
  transition: background var(--ac-t);
}

.ctx-item:hover { background: rgba(255,255,255,.07); }
html[data-theme="light"] .ctx-item:hover { background: rgba(0,0,0,.05); }
.ctx-item.danger { color: var(--ac-red); }
.ctx-item.danger:hover { background: rgba(255,59,48,.1); }
.ctx-item-sep { height: 1px; background: var(--ac-stroke); margin: 4px 8px; }
.ctx-icon { width: 22px; display: flex; align-items: center; justify-content: center; }
.ctx-icon i, .ctx-icon svg { width: 14px; height: 14px; }

/* ── MOVE MODAL FOLDER LIST ────────────────────────────────────── */
.move-folder-list { max-height: 280px; overflow-y: auto; }

.move-folder-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 9px;
  cursor: pointer;
  font-size: 13px;
  color: var(--ac-text);
  transition: background var(--ac-t);
}

.move-folder-row:hover { background: var(--ac-card-hover); }
.move-folder-row.selected { background: rgba(10,132,255,.12); border: 1px solid rgba(10,132,255,.25); }
.move-dest-bar { background: var(--ac-card); border: 1px solid var(--ac-stroke); border-radius: 9px; padding: 9px 14px; font-size: 13px; color: var(--ac-muted); margin-bottom: 12px; }
.move-dest-bar strong { color: var(--ac-text); }

/* ── NOTIFICATION BELL ─────────────────────────────────────────── */
.notif-bell { position: relative; }

.notif-badge-dot {
  position: absolute;
  top: 3px;
  right: 3px;
  width: 8px;
  height: 8px;
  background: var(--ac-red);
  border-radius: 50%;
  border: 2px solid var(--ac-card-s);
  box-shadow: 0 0 6px var(--ac-red);
}

.notif-count {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  background: var(--ac-red);
  border-radius: 99px;
  font-size: 10px;
  font-weight: 800;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}

.notif-dropdown {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 360px;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r);
  box-shadow: var(--ac-shadow);
  backdrop-filter: blur(var(--ac-blur));
  z-index: 200;
  overflow: hidden;
  display: none;
}

.notif-dropdown.open { display: block; }

.notif-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid var(--ac-stroke);
  font-size: 13px;
  font-weight: 700;
}

.notif-list { max-height: 400px; overflow-y: auto; }

.notif-item {
  display: flex;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--ac-stroke);
  cursor: pointer;
  transition: background var(--ac-t);
  text-decoration: none;
  color: var(--ac-text);
}

.notif-item:hover { background: rgba(255,255,255,.04); }
.notif-item.unread { background: rgba(10,132,255,.05); }

.notif-item-dot {
  width: 6px;
  height: 6px;
  background: var(--ac-blue);
  border-radius: 50%;
  margin-top: 6px;
  flex-shrink: 0;
}

.notif-title { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.notif-msg   { font-size: 12px; color: var(--ac-muted); line-height: 1.4; }
.notif-time  { font-size: 11px; color: var(--ac-faint); margin-top: 3px; }
.notif-empty { text-align: center; padding: 32px 20px; color: var(--ac-muted); font-size: 13px; }

/* ── SHARE MODAL ───────────────────────────────────────────────── */
.share-user-search-results {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r-sm);
  margin-top: 4px;
  max-height: 220px;
  overflow-y: auto;
  z-index: 10;
  box-shadow: var(--ac-shadow-s);
  display: none;
}

.share-user-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  cursor: pointer;
  border-bottom: 1px solid var(--ac-stroke);
  transition: background var(--ac-t);
}

.share-user-item:hover { background: var(--ac-card-hover); }

/* ── TOAST ─────────────────────────────────────────────────────── */
#toast-container {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: none;
}

.toast-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r-sm);
  backdrop-filter: blur(var(--ac-blur));
  box-shadow: var(--ac-shadow);
  font-size: 13px;
  font-weight: 500;
  color: var(--ac-text);
  min-width: 240px;
  max-width: 360px;
  animation: toastIn .2s ease;
  pointer-events: all;
  transition: opacity .3s;
}

@keyframes toastIn {
  from { opacity:0; transform: translateX(20px); }
  to   { opacity:1; transform: translateX(0); }
}

.toast-item.toast-ok   { border-left: 3px solid var(--ac-green); }
.toast-item.toast-err  { border-left: 3px solid var(--ac-red); }
.toast-item.toast-info { border-left: 3px solid var(--ac-blue); }
.toast-item.toast-warn { border-left: 3px solid var(--ac-yellow); }

/* ── PAGE HEADER ───────────────────────────────────────────────── */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}

.page-title { font-size: 20px; font-weight: 800; letter-spacing: -.01em; margin: 0; }
.header-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* ── QUOTA BAR (compact) ───────────────────────────────────────── */
.quota-mini { display: flex; flex-direction: column; gap: 4px; min-width: 100px; }
.quota-mini-bar { height: 3px; background: var(--ac-stroke-s); border-radius: 99px; overflow: hidden; }
.quota-mini-fill { height: 100%; background: linear-gradient(90deg, var(--ac-blue), var(--ac-cyan)); border-radius: 99px; transition: width .4s; }
.quota-mini-fill.warn { background: linear-gradient(90deg, var(--ac-orange), var(--ac-red)); }
.quota-mini-text { font-size: 11px; color: var(--ac-muted); }

/* ── EMPTY STATE ───────────────────────────────────────────────── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  text-align: center;
  color: var(--ac-muted);
  gap: 10px;
}

.empty-state-icon {
  width: 64px;
  height: 64px;
  border-radius: 20px;
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 8px;
  color: var(--ac-faint);
}

.empty-state-icon i, .empty-state-icon svg { width: 28px; height: 28px; }
.empty-state-title { font-size: 16px; font-weight: 700; color: var(--ac-text); }
.empty-state-sub { font-size: 13px; max-width: 280px; }

/* ── ROOT DROP ZONE ────────────────────────────────────────────── */
#rootDropZone {
  position: fixed;
  bottom: 80px;
  right: 24px;
  padding: 10px 16px;
  background: rgba(10,132,255,.15);
  border: 2px dashed var(--ac-blue);
  border-radius: var(--ac-r-sm);
  font-size: 12px;
  font-weight: 700;
  color: var(--ac-blue);
  display: none;
  align-items: center;
  gap: 8px;
  z-index: 500;
  transition: all var(--ac-t);
}

#rootDropZone.active { background: rgba(10,132,255,.25); }
body.dragging #rootDropZone { display: flex; }

/* ── VIEWER ────────────────────────────────────────────────────── */
.viewer-wrap { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }

.viewer-bar {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  background: var(--ac-card-s);
  border-bottom: 1px solid var(--ac-stroke);
  backdrop-filter: blur(var(--ac-blur));
}

.viewer-body {
  flex: 1;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #050709;
  position: relative;
}

.viewer-image { max-width: 100%; max-height: 100%; object-fit: contain; cursor: zoom-in; user-select: none; transition: transform .2s; }
.viewer-image.zoomed { cursor: zoom-out; transform: scale(2); }
.viewer-video { max-width: 100%; max-height: 100%; background: #000; }
.viewer-iframe { width: 100%; height: 100%; border: none; }

.viewer-text-wrap { width: 100%; height: 100%; overflow: auto; }
.viewer-text-wrap pre { margin: 0; min-height: 100%; font-size: 13px; line-height: 1.65; border-radius: 0 !important; background: #0d0f14 !important; padding: 24px; }

.viewer-audio-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 40px;
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  border-radius: var(--ac-r);
  width: 400px;
  max-width: 90vw;
}

.viewer-generic {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 40px;
  text-align: center;
}

/* ── AUTH PAGES ────────────────────────────────────────────────── */
.auth-shell {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
}

.auth-card {
  width: 100%;
  max-width: 440px;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r-lg);
  padding: 32px 32px 28px;
  backdrop-filter: blur(var(--ac-blur));
  box-shadow: var(--ac-shadow);
}

.auth-card-wide { max-width: 560px; }
.auth-title { font-size: 22px; font-weight: 800; margin-bottom: 6px; }
.auth-sub { font-size: 14px; color: var(--ac-muted); margin-bottom: 24px; }

.auth-logo { display: flex; align-items: center; gap: 12px; margin-bottom: 32px; text-decoration: none; }
.auth-logo-img { height: 36px; object-fit: contain; }
.auth-logo-text { font-size: 16px; font-weight: 800; color: var(--ac-text); }

/* ── HOME/PUBLIC ───────────────────────────────────────────────── */
.home-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(7,10,19,.85);
  backdrop-filter: blur(var(--ac-blur));
  border-bottom: 1px solid var(--ac-stroke);
}

html[data-theme="light"] .home-header { background: rgba(245,245,247,.88); }

.home-container { max-width: 1180px; margin: 0 auto; padding: 0 24px; }

.home-header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 64px;
  gap: 16px;
}

.home-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.home-logo-img { height: 28px; object-fit: contain; }

.home-nav { display: flex; align-items: center; gap: 16px; }
.home-nav-link { color: var(--ac-muted); font-size: 14px; font-weight: 600; text-decoration: none; transition: color var(--ac-t); }
.home-nav-link:hover { color: var(--ac-text); }

/* Plans grid */
.plans-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

.plan-card {
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  border-radius: var(--ac-r);
  padding: 24px;
  position: relative;
  backdrop-filter: blur(14px);
  transition: transform var(--ac-t), box-shadow var(--ac-t);
  display: flex;
  flex-direction: column;
}

.plan-card:hover { transform: translateY(-2px); box-shadow: var(--ac-shadow-s); }
.plan-card.featured { border-color: rgba(10,132,255,.4); background: linear-gradient(160deg, rgba(10,132,255,.08), var(--ac-card)); transform: scale(1.03); }
.plan-featured-badge { position: absolute; top: -11px; left: 50%; transform: translateX(-50%); background: var(--ac-blue); color: #fff; font-size: 10px; font-weight: 800; padding: 3px 12px; border-radius: 99px; text-transform: uppercase; letter-spacing: .06em; }
.plan-name { font-size: 18px; font-weight: 800; margin-bottom: 4px; }
.plan-tagline { font-size: 13px; color: var(--ac-muted); margin-bottom: 16px; }
.plan-price-value { font-size: 34px; font-weight: 900; letter-spacing: -.02em; }
.plan-price-period { font-size: 13px; color: var(--ac-muted); margin-left: 3px; }
.plan-storage-box { background: rgba(10,132,255,.08); border: 1px solid rgba(10,132,255,.15); border-radius: 10px; padding: 10px 14px; margin: 14px 0; text-align: center; }
.plan-storage-value { font-size: 18px; font-weight: 800; color: var(--ac-blue-h); }
.plan-storage-label { font-size: 11px; color: var(--ac-muted); margin-top: 2px; }
.plan-features { list-style: none; padding: 0; margin: 0 0 20px; display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.plan-features li { display: flex; align-items: flex-start; gap: 8px; }
.plan-features i, .plan-features svg { color: var(--ac-green); flex-shrink: 0; margin-top: 2px; }

/* ── ADMIN TABLE ───────────────────────────────────────────────── */
.cell-name  { font-weight: 700; font-size: 13px; }
.cell-sub   { font-size: 11px; color: var(--ac-muted); margin-top: 2px; }
.cell-muted { color: var(--ac-muted); font-size: 12px; }
.user-cell  { display: flex; align-items: center; gap: 10px; }
.row-inactive { opacity: .55; }
.action-row { display: flex; align-items: center; gap: 4px; }

/* ── FTP GUIDE ─────────────────────────────────────────────────── */
.ftp-guide {
  background: rgba(10,132,255,.07);
  border: 1px solid rgba(10,132,255,.2);
  border-radius: var(--ac-r-sm);
  padding: 16px 20px;
}

.ftp-guide code {
  display: block;
  background: rgba(0,0,0,.3);
  border: 1px solid var(--ac-stroke);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 12.5px;
  color: var(--ac-green);
  font-family: 'SF Mono', 'Fira Code', monospace;
  margin: 6px 0;
  word-break: break-all;
}

html[data-theme="light"] .ftp-guide code { background: rgba(0,0,0,.05); }

@media (max-width: 1440px) and (min-width: 992px) {
  .sidebar { width: 236px; flex-basis: 236px; }
  .sidebar-brand { padding: 18px 12px 14px; }
  .sidebar-brand-logo { height: 28px; }
  .side-link { padding: 9px 10px; font-size: 13px; }
  .content { padding: 18px; }
  .topbar { padding: 12px 16px; }
}

@media (max-width: 1260px) and (min-width: 992px) {
  .topbar { align-items: flex-start; }
  .breadcrumb-wrap { flex: 1 1 100%; order: 1; }
  .topbar-actions { width: 100%; order: 2; justify-content: space-between; }
  .topbar-search { flex: 1 1 auto; min-width: 0; }
}

/* ── MOBILE / RESPONSIVE ───────────────────────────────────────── */
.mobile-header {
  display: none;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--ac-card-s);
  border-bottom: 1px solid var(--ac-stroke);
  backdrop-filter: blur(var(--ac-blur));
  position: sticky;
  top: 0;
  z-index: 80;
}

@media (max-width: 991px) {
  .sidebar { display: none; }
  .mobile-header { display: flex; }
  .content { padding: 14px; }
  .topbar { align-items: flex-start; flex-wrap: wrap; }
  .breadcrumb-wrap { flex: 1 1 100%; }
  .topbar-actions { width: 100%; justify-content: space-between; }
  .topbar-search { flex: 1 1 auto; min-width: 0; }
  .cloud-grid { grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); }
  .stats-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 576px) {
  .cloud-grid { grid-template-columns: repeat(2, 1fr); }
  .topbar { padding: 10px 12px; }
  .topbar-actions { gap: 8px; }
  .topbar-search { width: 100%; min-width: 0; }
  .page-title { font-size: 17px; }
  .auth-card { padding: 24px 20px 20px; }
}

/* ── OFFCANVAS (mobile sidebar) ────────────────────────────────── */
.offcanvas { background: var(--ac-card-s) !important; border: none !important; border-right: 1px solid var(--ac-stroke-s) !important; }
.offcanvas-header { border-bottom: 1px solid var(--ac-stroke) !important; padding: 18px 20px 14px !important; }
.offcanvas-body { padding: 14px 10px !important; }

/* ── MISC UTILITIES ────────────────────────────────────────────── */
.text-muted { color: var(--ac-muted) !important; }
.text-faint { color: var(--ac-faint) !important; }
.border-subtle { border-color: var(--ac-stroke) !important; }
.bg-card  { background: var(--ac-card) !important; }
.bg-card-s { background: var(--ac-card-s) !important; }
.blur-bg { backdrop-filter: blur(var(--ac-blur)); -webkit-backdrop-filter: blur(var(--ac-blur)); }
.rounded-xl { border-radius: var(--ac-r) !important; }
.rounded-sm { border-radius: var(--ac-r-sm) !important; }
.rounded-lg { border-radius: var(--ac-r-lg) !important; }


/* ── LEGACY CUSTOM MODALS & TRANSFER UI (compat) ───────────────── */
.modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1090;
  background: rgba(4, 7, 17, .72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  align-items: center;
  justify-content: center;
  padding: 22px;
}
.modal-overlay.open { display: flex; }
body.modal-open-legacy { overflow: hidden; }

.modal-overlay > .modal {
  display: block;
  width: 100%;
  max-width: 560px;
  margin: 0;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke-s);
  border-radius: var(--ac-r-lg);
  box-shadow: 0 24px 80px rgba(0,0,0,.42);
  overflow: hidden;
}
.modal-overlay > .modal.modal-lg { max-width: 760px; }
.modal-close {
  appearance: none;
  border: 0;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  color: var(--ac-muted);
  background: transparent;
  cursor: pointer;
}
.modal-close:hover { background: rgba(255,255,255,.06); color: var(--ac-text); }
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.form-row { display: flex; gap: 14px; }
.flex-1 { flex: 1 1 auto; min-width: 0; }
.form-group label { font-size: 12px; font-weight: 700; color: var(--ac-muted); }
.form-input {
  width: 100%;
  min-height: 42px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--ac-stroke-s);
  background: rgba(255,255,255,.03);
  color: var(--ac-text);
  outline: none;
}
textarea.form-input { min-height: 110px; resize: vertical; }
.form-input:focus { border-color: rgba(122,162,255,.65); box-shadow: 0 0 0 3px rgba(122,162,255,.15); }
.link-text { color: var(--ac-blue); cursor: pointer; font-weight: 700; }
.link-text:hover { color: var(--ac-blue2); }
.drop-zone {
  border: 1.5px dashed var(--ac-stroke-s);
  border-radius: var(--ac-r-lg);
  padding: 24px 18px;
  text-align: center;
  background: rgba(255,255,255,.02);
  color: var(--ac-muted);
  transition: .18s ease;
  cursor: pointer;
}
.drop-zone:hover,
.drop-zone.dragover {
  border-color: rgba(122,162,255,.55);
  background: rgba(122,162,255,.08);
  color: var(--ac-text);
}
.drop-zone p { margin: 0; }
.drop-zone-sm { padding: 20px 16px; }
.upload-queue {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 12px;
}
.upload-progress {
  width: 100%;
  height: 4px;
  background: rgba(255,255,255,.08);
  border-radius: 999px;
  overflow: hidden;
  margin-top: 8px;
}
.upload-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--ac-blue), var(--ac-violet));
  border-radius: 999px;
}
.upload-item-name { font-size: 12px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.upload-item-status { min-width: 96px; text-align: right; font-size: 11px; font-weight: 700; }
.upload-status-ok { color: #3ddc97; }
.upload-status-err { color: #ff7c7c; }
.upload-status-pend { color: var(--ac-muted); }
.transfer-list { display: flex; flex-direction: column; gap: 12px; }
.transfer-card {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 16px 18px;
  border-radius: var(--ac-r-lg);
  border: 1px solid var(--ac-stroke-s);
  background: var(--ac-card-s);
}
.tc-icon {
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: rgba(122,162,255,.12);
  color: var(--ac-blue);
}
.tc-info { flex: 1 1 auto; min-width: 0; }
.tc-title { font-size: 15px; font-weight: 800; color: var(--ac-text); margin-bottom: 6px; }
.tc-meta { display: flex; flex-wrap: wrap; gap: 8px; font-size: 12px; color: var(--ac-muted); margin-bottom: 10px; }
.tc-link { display: flex; align-items: center; gap: 8px; }
.link-input {
  flex: 1 1 auto;
  min-width: 0;
  height: 40px;
  border-radius: 10px;
  border: 1px solid var(--ac-stroke-s);
  background: rgba(255,255,255,.03);
  color: var(--ac-text);
  padding: 0 12px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 12px;
}
.tc-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.badge-lock {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(245, 158, 11, .12);
  color: #fbbf24;
  font-size: 11px;
  font-weight: 700;
}
@media (max-width: 767.98px) {
  .transfer-card { flex-direction: column; }
  .tc-link { flex-direction: column; align-items: stretch; }
  .tc-actions { width: 100%; justify-content: flex-start; }
}


/* ── V9 PREMIUM UI SHELL ─────────────────────────────────────── */
.content {
  padding: 18px 22px 26px;
}
.content-inner {
  max-width: 1520px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.topbar {
  gap: 14px;
  padding: 12px 18px;
  background: linear-gradient(180deg, rgba(12,18,38,.78) 0%, rgba(12,18,38,.56) 100%);
}
html[data-theme="light"] .topbar {
  background: linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,.78) 100%);
}
.workspace-hero {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(0,1.35fr) minmax(280px,.9fr);
  gap: 18px;
  padding: 24px;
  border-radius: 24px;
  background:
    radial-gradient(540px 220px at 100% 0%, rgba(10,132,255,.16), transparent 62%),
    radial-gradient(360px 180px at 0% 100%, rgba(191,90,242,.14), transparent 68%),
    linear-gradient(180deg, rgba(12,18,38,.82) 0%, rgba(10,15,30,.68) 100%);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: var(--ac-shadow-s);
}
html[data-theme="light"] .workspace-hero {
  background:
    radial-gradient(540px 220px at 100% 0%, rgba(10,132,255,.12), transparent 62%),
    radial-gradient(360px 180px at 0% 100%, rgba(191,90,242,.10), transparent 68%),
    linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(248,249,252,.92) 100%);
  border-color: rgba(0,0,0,.06);
}
.workspace-hero::after {
  content: "";
  position: absolute;
  inset: auto -80px -100px auto;
  width: 240px;
  height: 240px;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(100,210,255,.16), transparent 68%);
  pointer-events: none;
}
.workspace-hero-main,
.workspace-hero-side { position: relative; z-index: 1; }
.workspace-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  border-radius: 999px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.08);
  color: var(--ac-muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: 12px;
}
html[data-theme="light"] .workspace-eyebrow {
  background: rgba(0,0,0,.035);
  border-color: rgba(0,0,0,.06);
}
.workspace-title {
  margin: 0;
  font-size: clamp(26px, 3.2vw, 34px);
  line-height: 1.02;
  letter-spacing: -.04em;
  font-weight: 900;
}
.workspace-subtitle {
  margin: 12px 0 0;
  max-width: 760px;
  color: var(--ac-muted);
  font-size: 14px;
  line-height: 1.65;
}
.workspace-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}
.workspace-meta {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  align-content: start;
}
.hero-chip, .hero-metric {
  min-height: 84px;
  padding: 14px 15px;
  border-radius: 18px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="light"] .hero-chip,
html[data-theme="light"] .hero-metric {
  background: rgba(255,255,255,.86);
  border-color: rgba(0,0,0,.06);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.75);
}
.hero-metric-label {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ac-faint);
  margin-bottom: 8px;
}
.hero-metric-value {
  font-size: 22px;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -.03em;
  color: var(--ac-text);
}
.hero-metric-sub {
  margin-top: 8px;
  color: var(--ac-muted);
  font-size: 12px;
  line-height: 1.45;
}
.hero-chip {
  min-height: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
}
.hero-chip i,.hero-chip svg { width: 16px; height: 16px; }
.hero-chip span { color: var(--ac-text); font-size: 13px; font-weight: 600; }
.hero-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}
.surface-card,
.table-wrap,
.file-grid,
.transfer-list,
.quota-bar-wrap,
.card {
  box-shadow: var(--ac-shadow-s);
}
.surface-card,
.table-wrap {
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  border-radius: 22px;
  overflow: hidden;
  backdrop-filter: blur(var(--ac-blur));
  -webkit-backdrop-filter: blur(var(--ac-blur));
}
.surface-card-body { padding: 22px; }
.surface-card-title {
  font-size: 15px;
  font-weight: 800;
  letter-spacing: -.02em;
  margin: 0 0 6px;
}
.surface-card-subtitle {
  color: var(--ac-muted);
  font-size: 13px;
  margin: 0 0 18px;
}
.split-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
/* Legacy lists / tables imported and refined */
.quota-bar-wrap {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  border-radius: 20px;
  padding: 14px 18px;
}
.quota-info { display: flex; align-items: center; gap: 10px; min-width: 210px; }
.quota-icon { color: var(--ac-muted); display: inline-flex; }
.quota-text { font-size: 13px; color: var(--ac-muted); }
.quota-track { flex: 1 1 auto; min-width: 100px; height: 8px; background: var(--ac-stroke); border-radius: 999px; overflow: hidden; }
.quota-pct { min-width: 44px; text-align: right; font-size: 12px; color: var(--ac-muted); }
.table-wrap { padding: 0; overflow: hidden; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table th {
  text-align: left;
  padding: 14px 18px;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ac-muted);
  background: rgba(255,255,255,.02);
  border-bottom: 1px solid var(--ac-stroke);
  white-space: nowrap;
}
html[data-theme="light"] .data-table th { background: rgba(0,0,0,.015); }
.data-table td {
  padding: 15px 18px;
  border-bottom: 1px solid var(--ac-stroke);
  vertical-align: middle;
  font-size: 13px;
}
.data-table tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover td { background: rgba(255,255,255,.03); }
html[data-theme="light"] .data-table tbody tr:hover td { background: rgba(0,0,0,.018); }
.file-grid {
  display: grid;
  /* FIX 2026-04-24: card più larghe (240 → 280) per nomi lunghi leggibili.
     La card stessa ora usa layout a 2 righe (vedi .file-card sotto)
     quindi le azioni non rubano più spazio al nome. */
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}
.file-grid.list-view { grid-template-columns: 1fr; }
.file-card {
  /* Layout 2-righe: [icona | info] sopra, [actions] sotto.
     Risolve il troncamento "A..." / "_..." negli screen admin. */
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-rows: auto auto;
  grid-template-areas:
    "icon info"
    "actions actions";
  align-items: center;
  gap: 10px 14px;
  padding: 14px 16px;
  border-radius: 20px;
  background: var(--ac-card);
  border: 1px solid var(--ac-stroke);
  backdrop-filter: blur(var(--ac-blur));
  -webkit-backdrop-filter: blur(var(--ac-blur));
  transition: transform var(--ac-t), border-color var(--ac-t), background var(--ac-t), box-shadow var(--ac-t);
}
.file-card .file-icon-wrap { grid-area: icon; }
.file-card .file-info { grid-area: info; }
.file-card .file-actions {
  grid-area: actions;
  justify-self: end;
  padding-top: 4px;
  border-top: 1px dashed rgba(255,255,255,.06);
  margin-top: 2px;
  width: 100%;
}
html[data-theme="light"] .file-card .file-actions {
  border-top-color: rgba(0,0,0,.06);
}
.file-card:hover {
  transform: translateY(-2px);
  background: var(--ac-card-hover);
  border-color: var(--ac-stroke-s);
  box-shadow: var(--ac-shadow-xs);
}
.file-icon-wrap {
  width: 54px;
  height: 54px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border: 1px solid rgba(255,255,255,.08);
}
.file-icon-wrap svg { width: 24px; height: 24px; }
.icon-folder { background: rgba(10,132,255,.16); color: var(--ac-blue); }
.icon-file { background: rgba(255,255,255,.06); color: var(--ac-text); }
.file-info { min-width: 0; overflow: hidden; }
.file-name {
  color: var(--ac-text);
  font-weight: 700;
  font-size: 14px;
  /* FIX 2026-04-24: nomi completi leggibili.
     Mostra fino a 2 righe, poi tooltip via title="" (aggiunto nell'explorer).
     Il layout a 2 righe della card garantisce larghezza piena per il nome. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-clamp: 2;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.3;
  text-decoration: none;
  max-width: 100%;
}
.file-name:hover { color: var(--ac-blue-h); }
.file-meta {
  display: block;
  margin-top: 6px;
  color: var(--ac-muted);
  font-size: 12px;
  line-height: 1.5;
}
.file-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.transfer-card {
  border-radius: 22px;
  padding: 18px 20px;
}
.tc-link {
  background: rgba(255,255,255,.03);
  border: 1px solid var(--ac-stroke);
  border-radius: 14px;
  padding: 8px;
}
html[data-theme="light"] .tc-link { background: rgba(0,0,0,.02); }
.link-input { border: 0 !important; background: transparent !important; }
.nav-tabs {
  gap: 10px;
  border-bottom: 0 !important;
}
.nav-tabs .nav-link {
  border: 1px solid var(--ac-stroke) !important;
  border-radius: 999px !important;
  background: var(--ac-card) !important;
  color: var(--ac-muted) !important;
  font-size: 13px;
  font-weight: 700;
  padding: 10px 16px !important;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-link:hover {
  background: rgba(10,132,255,.12) !important;
  color: var(--ac-text) !important;
  border-color: rgba(10,132,255,.24) !important;
}
.btn-ftp-scan {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 14px;
  border-radius: 999px;
  border: 1px solid rgba(10,132,255,.22);
  background: rgba(10,132,255,.12);
  color: var(--ac-text);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;
  cursor: pointer;
  transition: all var(--ac-t);
}
.btn-ftp-scan:hover { transform: translateY(-1px); background: rgba(10,132,255,.18); }
.ftp-scan-box {
  background: rgba(0,0,0,.28) !important;
  border: 1px solid var(--ac-stroke) !important;
  border-radius: 16px !important;
}
.page-stack { display: flex; flex-direction: column; gap: 16px; }
@media (max-width: 1199px) {
  .workspace-hero { grid-template-columns: 1fr; }
}
@media (max-width: 991px) {
  .content { padding: 14px 14px 22px; }
  .workspace-hero { padding: 18px; border-radius: 20px; }
  .workspace-title { font-size: 28px; }
  .split-grid-2 { grid-template-columns: 1fr; }
  .file-grid { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .topbar { padding: 10px 12px; }
  .workspace-actions { flex-direction: column; align-items: stretch; }
  .workspace-actions .btn { width: 100%; justify-content: center; }
  .quota-bar-wrap { flex-direction: column; align-items: stretch; }
  .quota-info { min-width: 0; }
  .file-card { grid-template-columns: auto minmax(0,1fr); }
  .file-actions { grid-column: 1 / -1; justify-content: flex-start; }
  .data-table { display: block; overflow-x: auto; }
}

/* ── VIEWER PREMIUM V12 ───────────────────────────────────────── */
.viewer-page-body {
  min-height: 100vh;
  overflow: hidden;
}

.viewer-shell-premium {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background:
    radial-gradient(900px 480px at 10% -10%, rgba(10,132,255,.14), transparent 55%),
    radial-gradient(700px 420px at 88% 0%, rgba(191,90,242,.10), transparent 52%),
    linear-gradient(180deg, #05070d 0%, #060912 100%);
}

html[data-theme="light"] .viewer-shell-premium {
  background:
    radial-gradient(900px 480px at 10% -10%, rgba(10,132,255,.08), transparent 55%),
    radial-gradient(700px 420px at 88% 0%, rgba(191,90,242,.06), transparent 52%),
    linear-gradient(180deg, #f6f7fb 0%, #eef1f7 100%);
}

.viewer-topbar-premium {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--ac-stroke);
  background: rgba(8, 12, 22, .72);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  position: sticky;
  top: 0;
  z-index: 40;
}
html[data-theme="light"] .viewer-topbar-premium { background: rgba(255,255,255,.75); }

.viewer-topbar-left,
.viewer-topbar-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
.viewer-topbar-left { min-width: 0; flex: 1 1 auto; }
.viewer-topbar-actions { flex-wrap: wrap; justify-content: flex-end; }

.viewer-file-headline { min-width: 0; }
.viewer-file-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.viewer-file-title {
  font-size: 18px;
  line-height: 1.15;
  margin: 0;
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: min(58vw, 780px);
}
.viewer-type-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 800;
  color: var(--ac-blue-h);
  border: 1px solid rgba(10,132,255,.25);
  background: rgba(10,132,255,.1);
}
.viewer-breadcrumbs-premium {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 5px;
  font-size: 12px;
  color: var(--ac-muted);
}
.viewer-breadcrumbs-premium a { color: var(--ac-muted); }
.viewer-breadcrumbs-premium a:hover { color: var(--ac-text); }

.viewer-main-premium {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 18px;
  padding: 18px;
}

.viewer-stage-premium {
  min-width: 0;
  min-height: 0;
  position: relative;
  border-radius: 28px;
  border: 1px solid var(--ac-stroke);
  background: rgba(6, 10, 18, .88);
  box-shadow: var(--ac-shadow);
  overflow: hidden;
}
html[data-theme="light"] .viewer-stage-premium { background: rgba(255,255,255,.9); }

.viewer-canvas-premium {
  position: relative;
  z-index: 2;
  min-height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 34px;
}
.viewer-canvas-media { background: #020409; }

.viewer-image-backdrop {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  filter: blur(46px) saturate(1.08);
  transform: scale(1.12);
  opacity: .28;
}
.viewer-stage-premium::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(4,7,12,.18) 0%, rgba(4,7,12,.55) 100%);
  pointer-events: none;
}
html[data-theme="light"] .viewer-stage-premium::after {
  background: linear-gradient(180deg, rgba(255,255,255,.08) 0%, rgba(255,255,255,.2) 100%);
}

.viewer-image-premium {
  position: relative;
  z-index: 2;
  max-width: 100%;
  max-height: calc(100vh - 180px);
  border-radius: 22px;
  box-shadow: 0 24px 60px rgba(0,0,0,.38);
  transform-origin: center center;
  transition: transform 180ms ease;
}

.viewer-video-premium,
.viewer-iframe-premium {
  position: relative;
  z-index: 2;
  width: 100%;
  height: calc(100vh - 190px);
  border: 0;
  border-radius: 22px;
  background: #000;
  box-shadow: 0 24px 60px rgba(0,0,0,.34);
}

.viewer-floating-tools {
  position: absolute;
  top: 18px;
  right: 18px;
  z-index: 3;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border-radius: 999px;
  background: rgba(8, 12, 22, .58);
  border: 1px solid rgba(255,255,255,.1);
  backdrop-filter: blur(14px);
}
html[data-theme="light"] .viewer-floating-tools { background: rgba(255,255,255,.74); }

.viewer-card-spotlight,
.viewer-data-shell,
.viewer-code-shell {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 18px;
  width: min(100%, 1040px);
  margin: 0 auto;
  padding: 28px;
}

.viewer-card-spotlight {
  max-width: 540px;
  align-items: center;
  justify-content: center;
  min-height: 100%;
  text-align: center;
}
.viewer-card-generic { max-width: 620px; }

.viewer-audio-art,
.viewer-generic-icon {
  width: 110px;
  height: 110px;
  border-radius: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,.12);
  background: linear-gradient(180deg, rgba(255,149,0,.18), rgba(255,149,0,.08));
  color: #ffb144;
  box-shadow: 0 18px 44px rgba(0,0,0,.28);
}
.viewer-generic-icon-office {
  background: linear-gradient(180deg, rgba(10,132,255,.2), rgba(10,132,255,.08));
  color: var(--ac-blue-h);
}
.viewer-audio-art i,
.viewer-generic-icon i,
.viewer-audio-art svg,
.viewer-generic-icon svg {
  width: 46px;
  height: 46px;
}
.viewer-audio-meta { display: flex; flex-direction: column; gap: 4px; }
.viewer-audio-name {
  font-size: 22px;
  line-height: 1.2;
  font-weight: 800;
  color: var(--ac-text);
  word-break: break-word;
}
.viewer-audio-sub,
.viewer-generic-note {
  color: var(--ac-muted);
  font-size: 14px;
}
.viewer-generic-note {
  max-width: 420px;
  margin: 0;
  line-height: 1.6;
}
.viewer-generic-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}

.viewer-data-toolbar,
.viewer-code-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.viewer-data-title {
  font-size: 18px;
  font-weight: 800;
  color: var(--ac-text);
}
.viewer-data-sub {
  font-size: 12px;
  color: var(--ac-muted);
  margin-top: 4px;
}
.viewer-code-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.viewer-data-table-wrap,
.viewer-code-wrap {
  border: 1px solid var(--ac-stroke);
  border-radius: 22px;
  overflow: auto;
  background: rgba(9, 13, 24, .78);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="light"] .viewer-data-table-wrap,
html[data-theme="light"] .viewer-code-wrap { background: rgba(255,255,255,.85); }

.viewer-data-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 620px;
}
.viewer-data-table th,
.viewer-data-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--ac-stroke);
  font-size: 13px;
  vertical-align: top;
  text-align: left;
}
.viewer-data-table th {
  position: sticky;
  top: 0;
  background: rgba(10,132,255,.12);
  color: var(--ac-text);
  font-weight: 700;
}
.viewer-data-table td { color: var(--ac-muted); }

.viewer-code-wrap pre {
  margin: 0;
  min-height: calc(100vh - 270px);
  padding: 26px;
  font-size: 13px;
  line-height: 1.7;
  background: #0b0f19 !important;
}

.viewer-empty-preview {
  min-height: calc(100vh - 320px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  text-align: center;
  padding: 30px;
}
.viewer-empty-icon {
  width: 72px;
  height: 72px;
  border-radius: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--ac-stroke);
  background: rgba(255,255,255,.03);
  color: var(--ac-faint);
}
.viewer-empty-icon i,
.viewer-empty-icon svg { width: 28px; height: 28px; }
.viewer-empty-title { font-size: 18px; font-weight: 800; color: var(--ac-text); }
.viewer-empty-sub { max-width: 420px; font-size: 13px; color: var(--ac-muted); }

.viewer-aside-premium {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow-y: auto;
  padding-right: 4px;
}
.viewer-aside-card {
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke);
  border-radius: 24px;
  padding: 18px;
  box-shadow: var(--ac-shadow-s);
}
.viewer-summary-card {
  background: linear-gradient(180deg, rgba(10,132,255,.13), rgba(191,90,242,.06)), var(--ac-card-s);
}
.viewer-aside-top {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}
.viewer-summary-icon {
  width: 52px;
  height: 52px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(255,255,255,.06);
  color: var(--ac-text);
}
.viewer-summary-icon.image { color: #34c759; }
.viewer-summary-icon.pdf { color: #ff453a; }
.viewer-summary-icon.video { color: #64d2ff; }
.viewer-summary-icon.audio { color: #ffb144; }
.viewer-summary-icon.csv { color: #30d158; }
.viewer-summary-icon.text { color: #0A84FF; }
.viewer-summary-icon i,
.viewer-summary-icon svg { width: 24px; height: 24px; }
.viewer-aside-title {
  font-size: 16px;
  font-weight: 800;
  color: var(--ac-text);
}
.viewer-aside-sub {
  font-size: 12px;
  color: var(--ac-muted);
  margin-top: 2px;
}
.viewer-aside-title-sm {
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 800;
  color: var(--ac-faint);
  margin-bottom: 12px;
}
.viewer-kpi-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 10px;
}
.viewer-kpi-box {
  border-radius: 16px;
  padding: 12px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.035);
}
.viewer-kpi-box span {
  display: block;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--ac-faint);
}
.viewer-kpi-box strong {
  display: block;
  font-size: 13px;
  line-height: 1.35;
  margin-top: 6px;
  color: var(--ac-text);
}
.viewer-meta-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.viewer-meta-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--ac-stroke);
}
.viewer-meta-row:last-child { border-bottom: 0; padding-bottom: 0; }
.viewer-meta-row span {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ac-faint);
}
.viewer-meta-row strong {
  font-size: 13px;
  line-height: 1.55;
  color: var(--ac-text);
  word-break: break-word;
}
.viewer-meta-row strong.mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 12px;
}
.viewer-action-stack,
.viewer-nav-stack {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.viewer-action-stack .btn { justify-content: center; }
.viewer-nav-card {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 12px 14px;
  border-radius: 16px;
  border: 1px solid var(--ac-stroke);
  background: rgba(255,255,255,.03);
  color: var(--ac-text);
  transition: all var(--ac-t);
}
.viewer-nav-card:hover {
  transform: translateY(-1px);
  border-color: rgba(10,132,255,.28);
  background: rgba(10,132,255,.07);
}
.viewer-nav-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ac-faint);
}

@media (max-width: 1180px) {
  .viewer-main-premium {
    grid-template-columns: minmax(0, 1fr);
    padding-right: 18px;
  }
  .viewer-aside-premium {
    position: fixed;
    right: 16px;
    top: 82px;
    bottom: 16px;
    width: min(380px, calc(100vw - 32px));
    max-width: 100%;
    z-index: 60;
    transform: translateX(calc(100% + 24px));
    transition: transform var(--ac-t);
    padding-right: 0;
  }
  .viewer-aside-premium.is-open { transform: translateX(0); }
}

@media (max-width: 900px) {
  .viewer-topbar-premium {
    flex-direction: column;
    align-items: stretch;
  }
  .viewer-topbar-actions { justify-content: flex-start; }
  .viewer-file-title { max-width: 100%; white-space: normal; }
  .viewer-main-premium { padding: 14px; gap: 14px; }
  .viewer-canvas-premium,
  .viewer-card-spotlight,
  .viewer-data-shell,
  .viewer-code-shell { padding: 18px; }
  .viewer-video-premium,
  .viewer-iframe-premium { height: calc(100vh - 310px); }
  .viewer-image-premium { max-height: calc(100vh - 310px); }
}

@media (max-width: 640px) {
  .viewer-topbar-premium { padding: 12px 14px; }
  .viewer-main-premium { padding: 10px; }
  .viewer-stage-premium { border-radius: 20px; }
  .viewer-kpi-grid { grid-template-columns: 1fr; }
  .viewer-floating-tools { top: 10px; right: 10px; }
}


/* ── PUBLIC LINK ENGINE v13 ───────────────────────────── */
.public-link-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.public-link-panel{background:var(--ac-soft);border:1px solid var(--ac-stroke);border-radius:20px;padding:16px}
.public-link-row{padding:12px 14px;border:1px solid var(--ac-stroke);border-radius:16px;background:var(--ac-card);margin-bottom:10px}
.public-link-row-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.public-link-row-title{font-weight:800;font-size:13px;color:var(--ac-text)}
.public-link-url{font-size:12px;line-height:1.4;color:var(--ac-blue);word-break:break-all;margin-bottom:6px}
.public-link-meta{font-size:11px;color:var(--ac-muted)}
.public-link-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.public-link-state{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:700;border:1px solid var(--ac-stroke)}
.public-link-state.is-on{color:#3fb950;background:rgba(63,185,80,.08);border-color:rgba(63,185,80,.25)}
.public-link-state.is-off{color:#f78166;background:rgba(247,129,102,.08);border-color:rgba(247,129,102,.25)}

.public-share-body{margin:0;font-family:Inter,system-ui,sans-serif;background:radial-gradient(circle at top left, rgba(56,139,253,.18), transparent 30%), radial-gradient(circle at top right, rgba(163,113,247,.18), transparent 24%), #070b14;color:#e6edf3;min-height:100vh}
.public-share-wrap{max-width:1180px;margin:0 auto;padding:34px 18px 48px}
.public-share-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px;color:#c9d1d9}
.public-share-logo-dot{width:14px;height:14px;border-radius:50%;background:linear-gradient(135deg,#0a84ff,#7c4dff);box-shadow:0 0 18px rgba(10,132,255,.45)}
.public-share-brand-title{font-weight:800;letter-spacing:.02em}
.public-share-brand-sub{font-size:12px;color:#8b949e}
.public-share-card{background:rgba(13,17,23,.84);border:1px solid rgba(255,255,255,.08);border-radius:28px;padding:24px;backdrop-filter:blur(18px);box-shadow:0 28px 70px rgba(0,0,0,.28);margin-bottom:18px}
.public-share-compact{max-width:520px;margin:40px auto 0;text-align:center}
.public-share-lock{width:68px;height:68px;border-radius:22px;margin:0 auto 16px;background:rgba(56,139,253,.12);display:flex;align-items:center;justify-content:center;color:#8ab4ff}
.public-share-lock svg,.public-share-lock i{width:28px;height:28px}
.public-share-title{margin:0 0 8px;font-size:clamp(28px,4vw,40px);font-weight:800;line-height:1.05}
.public-share-subtitle{margin:0;color:#9fb0c8;max-width:760px}
.public-share-password-form{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.public-share-hero{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px;align-items:stretch}
.public-share-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:rgba(56,139,253,.12);color:#8ab4ff;border:1px solid rgba(56,139,253,.22);font-size:12px;font-weight:700;margin-bottom:14px}
.public-share-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.public-share-hero-side{display:grid;grid-template-columns:1fr;gap:12px}
.public-share-stat{border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:16px 18px;background:rgba(255,255,255,.02)}
.public-share-stat span{display:block;font-size:12px;color:#8b949e;margin-bottom:6px}
.public-share-stat strong{font-size:24px;font-weight:800}
.public-share-section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:16px}
.public-share-section-head h2{margin:0;font-size:18px;font-weight:800}
.public-share-mini-meta{font-size:12px;color:#8b949e}
.public-share-preview-stage{border-radius:22px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));padding:14px;min-height:420px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.public-share-image,.public-share-media{max-width:100%;max-height:70vh;border-radius:16px}
.public-share-frame{width:100%;height:70vh;border:0;border-radius:16px;background:#fff}
.public-share-audio{min-height:160px}
.public-share-code{margin:0;background:#05070c;border-radius:18px;padding:18px;font-size:13px;line-height:1.55;overflow:auto;max-height:70vh;border:1px solid rgba(255,255,255,.06)}
.public-share-empty{padding:22px;border-radius:20px;border:1px dashed rgba(255,255,255,.12);color:#9fb0c8;background:rgba(255,255,255,.02)}
.public-share-list{display:flex;flex-direction:column;gap:10px}
.public-share-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-radius:18px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02)}
.public-share-row-title{font-weight:700;line-height:1.35;word-break:break-word}
.public-share-row-meta{font-size:12px;color:#8b949e;margin-top:4px}
.public-share-row-badge{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#9fb0c8}

@media (max-width: 991px){
  .public-link-grid,.public-share-hero{grid-template-columns:1fr}
}

/* Workspace v18 — favorites, recents, home premium */
.workspace-home-grid{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:start}
.workspace-home-stats{display:grid;gap:12px}
.workspace-mini-stat{padding:18px;border:1px solid var(--ac-stroke);border-radius:22px;background:linear-gradient(180deg,rgba(13,20,38,.88),rgba(8,12,24,.94));box-shadow:0 18px 36px rgba(0,0,0,.24)}
.workspace-mini-label{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ac-muted);margin-bottom:8px}
.workspace-mini-stat strong{font-size:30px;line-height:1;font-weight:800;display:block}
.workspace-home-panels{display:grid;grid-template-columns:1.1fr 1.1fr .9fr;gap:18px}
.workspace-home-panel{padding:18px;border:1px solid var(--ac-stroke);border-radius:22px;background:linear-gradient(180deg,rgba(13,20,38,.88),rgba(8,12,24,.94));box-shadow:0 18px 36px rgba(0,0,0,.24);min-height:100%}
.workspace-home-panel--compact{min-width:0}
.workspace-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.workspace-section-head h3{margin:0;font-size:20px;font-weight:800}
.workspace-section-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ac-muted);margin-bottom:4px}
.workspace-inline-list,.workspace-transfer-list,.workspace-recent-list{display:grid;gap:12px}
.workspace-inline-item,.workspace-recent-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;border:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.03);text-decoration:none;color:inherit;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.workspace-inline-item:hover,.workspace-recent-item:hover{transform:translateY(-1px);border-color:rgba(10,132,255,.35);background:rgba(10,132,255,.08);color:inherit}
.workspace-inline-icon,.workspace-recent-item__icon{width:42px;height:42px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;background:rgba(10,132,255,.12);color:var(--ac-blue);flex-shrink:0}
.workspace-inline-copy,.workspace-recent-item__body{display:flex;flex-direction:column;min-width:0;gap:2px}
.workspace-inline-copy strong,.workspace-recent-item__body strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workspace-inline-copy small,.workspace-recent-item__body span,.workspace-transfer-item small{font-size:12px;color:var(--ac-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workspace-empty-inline{padding:14px;border-radius:18px;border:1px dashed rgba(255,255,255,.1);color:var(--ac-muted);font-size:13px;background:rgba(255,255,255,.02)}
.workspace-transfer-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:18px;border:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.03)}
.status-pill{display:inline-flex;align-items:center;justify-content:center;min-width:72px;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.status-pill.is-on{background:rgba(48,209,88,.14);color:#4ade80}
.status-pill.is-off{background:rgba(255,69,58,.14);color:#ff7a70}
.fav-toggle.is-favorite{color:#ffd65a!important;border-color:rgba(255,214,90,.28)!important;background:rgba(255,214,90,.12)!important}
.fav-toggle.is-favorite svg{stroke:#ffd65a}
.workspace-card{min-height:220px}
.workspace-recent-item .fav-toggle{margin-left:auto;flex-shrink:0}
.workspace-hero--compact .workspace-hero-main{max-width:none}
@media (max-width: 1200px){.workspace-home-grid{grid-template-columns:1fr}.workspace-home-panels{grid-template-columns:1fr}}
@media (max-width: 768px){.workspace-mini-stat strong{font-size:24px}.workspace-home-panel{padding:16px}.workspace-inline-item,.workspace-recent-item,.workspace-transfer-item{padding:12px}}

/* Workspace v18.2 — light theme contrast + safe UI polish */
.workspace-mini-stat,
.workspace-home-panel,
.workspace-inline-item,
.workspace-recent-item,
.workspace-transfer-item,
.workspace-empty-inline{
  color: var(--ac-text);
}

html[data-theme="light"] .workspace-mini-stat,
html[data-theme="light"] .workspace-home-panel{
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(246,248,255,.94));
  border-color: rgba(15,23,42,.08);
  box-shadow: 0 18px 36px rgba(15,23,42,.08);
}

html[data-theme="light"] .workspace-inline-item,
html[data-theme="light"] .workspace-recent-item,
html[data-theme="light"] .workspace-transfer-item{
  background: rgba(255,255,255,.86);
  border-color: rgba(15,23,42,.08);
}

html[data-theme="light"] .workspace-empty-inline{
  background: rgba(255,255,255,.7);
  border-color: rgba(15,23,42,.12);
  color: var(--ac-muted);
}

html[data-theme="light"] .workspace-inline-item:hover,
html[data-theme="light"] .workspace-recent-item:hover{
  background: rgba(10,132,255,.08);
  border-color: rgba(10,132,255,.22);
}

html[data-theme="light"] .workspace-section-head h3,
html[data-theme="light"] .workspace-mini-stat strong,
html[data-theme="light"] .workspace-transfer-item strong,
html[data-theme="light"] .workspace-inline-copy strong,
html[data-theme="light"] .workspace-recent-item__body strong{
  color: var(--ac-text);
}

html[data-theme="light"] .status-pill.is-on{
  background: rgba(34,197,94,.12);
  color: #15803d;
}

html[data-theme="light"] .status-pill.is-off{
  background: rgba(239,68,68,.12);
  color: #b91c1c;
}


/* v18.4 safe dashboard controls */
.topbar-sort {
  display:flex;
  align-items:center;
  gap:8px;
  min-width: 190px;
}
.topbar-sort-label {
  font-size:12px;
  font-weight:700;
  color:var(--ac-muted);
  margin:0;
  white-space:nowrap;
}
.topbar-sort .form-select {
  min-width: 150px;
}
.toolbar-filters {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin: 2px 0 16px;
}
.filter-chip {
  appearance:none;
  border:1px solid var(--ac-stroke);
  background:var(--ac-card);
  color:var(--ac-muted);
  border-radius:999px;
  padding:10px 14px;
  font-size:12px;
  font-weight:700;
  line-height:1;
  transition: all var(--ac-t);
  cursor:pointer;
}
.filter-chip:hover {
  color:var(--ac-text);
  border-color:rgba(10,132,255,.22);
}
.filter-chip.is-active {
  background: rgba(10,132,255,.12);
  border-color: rgba(10,132,255,.28);
  color: var(--ac-text);
  box-shadow: 0 10px 24px rgba(10,132,255,.10);
}
html[data-theme="light"] .workspace-home-panel,
html[data-theme="light"] .workspace-mini-stat {
  background: linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);
  color: var(--ac-text);
}
html[data-theme="light"] .workspace-empty-inline,
html[data-theme="light"] .workspace-inline-item small,
html[data-theme="light"] .workspace-transfer-item small,
html[data-theme="light"] .workspace-section-eyebrow,
html[data-theme="light"] .workspace-mini-label {
  color: var(--ac-muted);
}
@media (max-width: 1199.98px) {
  .topbar-sort { min-width: 0; }
  .topbar-sort .form-select { min-width: 135px; }
}
@media (max-width: 767.98px) {
  .toolbar-filters { gap:8px; margin-top: 10px; }
  .filter-chip { padding:9px 12px; }
  .topbar-sort { width:100%; }
  .topbar-sort .form-select { width:100%; }
}


/* v18.5 safe notifications center */
.notif-foot{padding:12px 16px;border-top:1px solid var(--ac-stroke);background:rgba(255,255,255,.02)}
.notif-foot a{text-decoration:none;font-size:12px;font-weight:700;color:var(--ac-blue)}
.notif-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:6px 0 18px}
.notif-page-list{display:grid;gap:14px}
.notif-page-item{display:grid;grid-template-columns:24px 1fr;gap:12px;padding:18px 20px;border:1px solid var(--ac-stroke);border-radius:22px;background:var(--ac-card);box-shadow:var(--ac-shadow-s);transition:border-color var(--ac-t),transform var(--ac-t),box-shadow var(--ac-t)}
.notif-page-item:hover{transform:translateY(-1px);border-color:rgba(10,132,255,.22);box-shadow:0 16px 28px rgba(0,0,0,.08)}
.notif-page-item.is-unread{border-color:rgba(10,132,255,.26);background:linear-gradient(180deg,rgba(10,132,255,.06),rgba(10,132,255,.02))}
.notif-page-dot{display:flex;align-items:flex-start;justify-content:center;padding-top:6px}
.notif-page-dot span{display:block;width:10px;height:10px;border-radius:50%;background:var(--ac-blue);box-shadow:0 0 0 6px rgba(10,132,255,.10)}
.notif-page-main{min-width:0}
.notif-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:8px}
.notif-page-head h3{margin:0;font-size:18px;font-weight:800;color:var(--ac-text)}
.notif-page-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--ac-muted);font-size:12px;margin-top:6px}
.notif-page-message{font-size:14px;line-height:1.6;color:var(--ac-muted)}
.notif-page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.btn-ghost.is-current{background:rgba(10,132,255,.12);border-color:rgba(10,132,255,.28);color:var(--ac-text)}
html[data-theme="light"] .notif-foot{background:#fff}
html[data-theme="light"] .notif-page-item{background:linear-gradient(180deg,#fff 0%,#f7f9fc 100%);border-color:rgba(15,23,42,.08)}
html[data-theme="light"] .notif-page-item.is-unread{background:linear-gradient(180deg,rgba(10,132,255,.06),rgba(255,255,255,.98));border-color:rgba(10,132,255,.18)}
@media (max-width: 767.98px){.notif-page-item{grid-template-columns:1fr;padding:16px}.notif-page-dot{display:none}.notif-page-head{flex-direction:column}.notif-page-actions{justify-content:flex-start}}

/* ── SAFE BULK ACTIONS / SELECTION TOOLBAR ───────────────────── */
.topbar-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

#btnSelectionMode.is-active {
  background: rgba(10,132,255,.12);
  border-color: rgba(10,132,255,.26);
  color: var(--ac-blue);
}

.bulk-toolbar {
  margin: 14px 0 18px;
  padding: 12px 14px;
  border: 1px solid var(--ac-stroke);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(255,255,255,.86), rgba(248,249,253,.92));
  box-shadow: var(--ac-shadow-xs);
}
html[data-theme="dark"] .bulk-toolbar {
  background: linear-gradient(180deg, rgba(12,18,38,.88), rgba(16,22,46,.94));
}
.bulk-toolbar-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.bulk-toolbar-count {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
}
.bulk-toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.item-select-toggle {
  position: absolute;
  top: 12px;
  left: 12px;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.8);
  background: rgba(255,255,255,.96);
  color: #4b5563;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-2px);
  transition: opacity .18s ease, transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
  z-index: 3;
}
html[data-theme="dark"] .item-select-toggle {
  background: rgba(12,18,38,.92);
  border-color: rgba(255,255,255,.16);
  color: rgba(240,244,255,.84);
}
.selection-mode .item-select-toggle,
.cloud-card:hover .item-select-toggle,
.cloud-card.is-selected .item-select-toggle {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.cloud-card.is-selected {
  border-color: rgba(10,132,255,.28);
  box-shadow: 0 0 0 2px rgba(10,132,255,.14), var(--ac-shadow-xs);
}
.cloud-card.is-selected .item-select-toggle {
  background: var(--ac-blue);
  border-color: var(--ac-blue);
  color: #fff;
}
.cloud-card.is-selected .cloud-card-actions {
  opacity: 1;
}
@media (max-width: 991.98px) {
  .bulk-toolbar-main,
  .topbar-actions {
    align-items: stretch;
  }
  .bulk-toolbar-actions {
    width: 100%;
  }
  .bulk-toolbar-actions .btn,
  .topbar-actions .btn {
    flex: 1 1 auto;
  }
}


/* v18.7 safe details drawer */
.details-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15,23,42,.28);
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease;
  z-index: 1050;
}
.details-backdrop.is-open {
  opacity: 1;
  pointer-events: auto;
}
.details-drawer {
  position: fixed;
  top: 0;
  right: 0;
  width: min(420px, 92vw);
  height: 100vh;
  background: rgba(255,255,255,.97);
  backdrop-filter: blur(12px);
  border-left: 1px solid rgba(15,23,42,.08);
  box-shadow: -18px 0 50px rgba(15,23,42,.16);
  transform: translateX(104%);
  transition: transform .22s ease;
  z-index: 1051;
  display: flex;
  flex-direction: column;
}
.details-drawer.is-open { transform: translateX(0); }
html[data-theme="dark"] .details-drawer {
  background: rgba(12,18,38,.96);
  border-left-color: rgba(255,255,255,.08);
  box-shadow: -18px 0 50px rgba(0,0,0,.42);
}
.details-drawer-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  border-bottom: 1px solid rgba(15,23,42,.08);
}
html[data-theme="dark"] .details-drawer-head { border-bottom-color: rgba(255,255,255,.08); }
.details-drawer-head h3 {
  margin: 4px 0 0;
  font-size: 1.05rem;
  line-height: 1.3;
  word-break: break-word;
}
.details-drawer-eyebrow {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ac-muted);
}
.details-drawer-body {
  padding: 18px 20px 22px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow: auto;
}
.details-card {
  border: 1px solid rgba(15,23,42,.08);
  border-radius: 20px;
  padding: 16px;
  background: linear-gradient(180deg, rgba(255,255,255,.92), rgba(248,250,255,.96));
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 14px;
}
html[data-theme="dark"] .details-card {
  background: linear-gradient(180deg, rgba(18,26,52,.96), rgba(12,18,38,.98));
  border-color: rgba(255,255,255,.08);
}
.details-icon-wrap {
  width: 64px;
  height: 64px;
  border-radius: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(10,132,255,.12), rgba(123,97,255,.14));
  color: var(--ac-blue);
}
.details-icon-wrap i { width: 28px; height: 28px; }
.details-meta-list { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.details-meta-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  border-bottom: 1px dashed rgba(15,23,42,.08);
  padding-bottom: 8px;
}
.details-meta-row:last-child { border-bottom: 0; padding-bottom: 0; }
html[data-theme="dark"] .details-meta-row { border-bottom-color: rgba(255,255,255,.08); }
.details-meta-row span {
  font-size: .8rem;
  color: var(--ac-muted);
  flex-shrink: 0;
}
.details-meta-row strong {
  font-size: .88rem;
  text-align: right;
  word-break: break-word;
}
.details-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.details-actions .btn.is-favorite {
  border-color: rgba(255,191,0,.26);
  color: #b88900;
  background: rgba(255,191,0,.08);
}
.details-tip {
  border-radius: 16px;
  padding: 12px 14px;
  font-size: .86rem;
  line-height: 1.55;
  color: var(--ac-muted);
  background: rgba(10,132,255,.06);
  border: 1px solid rgba(10,132,255,.08);
}
@media (max-width: 767.98px) {
  .details-drawer { width: 100vw; }
  .details-card { grid-template-columns: 1fr; }
}

/* v18.8 safe admin filters */
.side-link.active::before {
  content: "";
  position: absolute;
  left: -1px;
  top: 8px;
  bottom: 8px;
  width: 3px;
  border-radius: 999px;
  background: var(--ac-blue);
}

.admin-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.admin-toolbar-search {
  min-width: min(100%, 360px);
  flex: 1 1 300px;
  position: relative;
}
.admin-toolbar-search i,
.admin-toolbar-search svg {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 15px;
  height: 15px;
  color: var(--ac-faint);
  pointer-events: none;
}
.admin-toolbar-search .form-control {
  padding-left: 36px;
  height: 42px;
  border-radius: 14px;
}
.admin-toolbar-filters {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.admin-toolbar-filters .form-select {
  min-width: 160px;
  height: 42px;
  border-radius: 14px;
}
.admin-toolbar-count {
  display: inline-flex;
  align-items: center;
  padding: 0 14px;
  height: 42px;
  border-radius: 14px;
  border: 1px solid var(--ac-stroke);
  background: var(--ac-surface);
  color: var(--ac-muted);
  font-size: 13px;
  font-weight: 700;
}
.admin-table-wrap thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--ac-surface);
}
.admin-table-empty {
  padding: 22px 14px;
  text-align: center;
  color: var(--ac-muted);
  font-weight: 600;
}
@media (max-width: 991.98px) {
  .admin-toolbar-search,
  .admin-toolbar-filters,
  .admin-toolbar-filters .form-select,
  .admin-toolbar-count {
    width: 100%;
  }
  .admin-toolbar-filters {
    display: grid;
    grid-template-columns: 1fr;
  }
}



/* ── SAFE TOOLBARS / FILTERS ─────────────────────────────────── */
.workspace-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  padding: 14px 16px;
  border: 1px solid var(--ac-stroke);
  background: var(--ac-card);
  border-radius: 16px;
  box-shadow: var(--ac-shadow-xs);
}
.workspace-toolbar-main,
.workspace-toolbar-side {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.toolbar-search {
  min-width: min(100%, 320px);
  flex: 1 1 280px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 12px;
  height: 42px;
  border-radius: 999px;
  background: var(--ac-card-s);
  border: 1px solid var(--ac-stroke);
}
.toolbar-search svg,
.toolbar-search i {
  color: var(--ac-muted);
  flex: 0 0 auto;
}
.toolbar-input {
  flex: 1 1 auto;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ac-text);
  font-size: 14px;
}
.toolbar-input::placeholder { color: var(--ac-muted); }
.toolbar-segments {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.toolbar-chip {
  border: 1px solid var(--ac-stroke);
  background: var(--ac-card-s);
  color: var(--ac-text);
  border-radius: 999px;
  height: 38px;
  padding: 0 14px;
  font-size: 13px;
  font-weight: 700;
  transition: all var(--ac-t);
}
.toolbar-chip:hover {
  transform: translateY(-1px);
  border-color: var(--ac-blue);
}
.toolbar-chip.is-active {
  background: rgba(10,132,255,.16);
  border-color: rgba(10,132,255,.38);
  color: var(--ac-blue-h);
}
.toolbar-counter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 12px;
  height: 38px;
  border-radius: 999px;
  border: 1px solid var(--ac-stroke);
  background: var(--ac-card-s);
  color: var(--ac-muted);
  font-size: 13px;
  font-weight: 700;
}
.badge-active,
.badge-expired {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  margin-left: 8px;
  vertical-align: middle;
}
.badge-active {
  background: rgba(52,199,89,.14);
  color: #1fa855;
  border: 1px solid rgba(52,199,89,.22);
}
.badge-expired {
  background: rgba(255,59,48,.12);
  color: #d93025;
  border: 1px solid rgba(255,59,48,.18);
}
html[data-theme="dark"] .badge-active { color: #7ee787; }
html[data-theme="dark"] .badge-expired { color: #ff7b72; }

@media (max-width: 991.98px) {
  .workspace-toolbar {
    padding: 12px;
  }
  .workspace-toolbar-main,
  .workspace-toolbar-side {
    width: 100%;
  }
  .toolbar-search {
    width: 100%;
    min-width: 0;
  }
}


/* ── SAFE V18.10 WORKFLOW FILTERS ─────────────────────────────── */
.unified-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
  padding:14px 16px;
  margin:20px 0 8px;
  background: var(--ac-card);
  border:1px solid var(--ac-stroke);
  border-radius:18px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: var(--ac-shadow-xs);
}
.toolbar-filters--wrap { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.toolbar-search-inline {
  display:flex;
  align-items:center;
  gap:10px;
  min-width:min(100%, 320px);
  padding:10px 12px;
  border:1px solid var(--ac-stroke);
  border-radius:14px;
  background: rgba(255,255,255,.03);
}
html[data-theme="light"] .toolbar-search-inline { background: rgba(255,255,255,.72); }
.toolbar-search-inline i { width:16px; height:16px; color: var(--ac-muted); flex:0 0 auto; }
.toolbar-search-inline .form-control {
  border:0 !important;
  background: transparent !important;
  box-shadow:none !important;
  padding:0;
  min-width:180px;
}
.toolbar-search-inline .form-control:focus { box-shadow:none !important; }
.empty-state-inline { margin-top:18px; }
.approvals-topbar, .trash-topbar-actions { gap:12px; }
.trash-table tbody tr[style*="display: none"] td { border-bottom-color: transparent; }
.notif-page-item[style*="display: none"] + .notif-page-item { margin-top:0; }
@media (max-width: 991.98px) {
  .unified-toolbar {
    align-items:stretch;
    padding:12px;
  }
  .toolbar-search-inline {
    width:100%;
    min-width:0;
  }
  .toolbar-counter {
    width:100%;
  }
}

/* v18.11 — Global search / command palette */
.command-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(10, 12, 22, 0.52);
  backdrop-filter: blur(8px);
  z-index: 1200;
  opacity: 0;
  transition: opacity .16s ease;
}
.command-backdrop.is-open { opacity: 1; }
.command-palette {
  position: fixed;
  top: 8vh;
  left: 50%;
  transform: translateX(-50%) translateY(-8px);
  width: min(880px, calc(100vw - 28px));
  z-index: 1210;
  opacity: 0;
  pointer-events: none;
  transition: opacity .16s ease, transform .16s ease;
}
.command-palette.is-open {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
.command-palette-shell {
  background: rgba(16, 18, 29, 0.88);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 24px;
  box-shadow: 0 36px 80px rgba(0,0,0,0.42);
  overflow: hidden;
}
html[data-theme="light"] .command-palette-shell {
  background: rgba(255,255,255,0.94);
  border-color: rgba(20, 28, 48, 0.08);
  box-shadow: 0 32px 72px rgba(22, 29, 56, 0.18);
}
.command-palette-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
html[data-theme="light"] .command-palette-head { border-bottom-color: rgba(20, 28, 48, 0.08); }
.command-palette-head > i,
.command-palette-head svg {
  width: 18px;
  height: 18px;
  color: var(--ac-muted);
  flex: 0 0 auto;
}
.command-input {
  flex: 1 1 auto;
  min-width: 0;
  border: none;
  background: transparent;
  color: var(--ac-text);
  font-size: 15px;
  font-weight: 600;
  outline: none;
}
.command-input::placeholder { color: var(--ac-muted); }
.command-close {
  width: 38px;
  height: 38px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.08);
  background: transparent;
  color: var(--ac-text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.command-close:hover { background: rgba(255,255,255,0.05); }
html[data-theme="light"] .command-close { border-color: rgba(20, 28, 48, 0.08); }
html[data-theme="light"] .command-close:hover { background: rgba(20, 28, 48, 0.05); }
.command-palette-body {
  max-height: min(68vh, 640px);
  overflow: auto;
  padding: 10px 10px 14px;
}
.command-palette-body.is-loading { opacity: .72; }
.command-section + .command-section { margin-top: 10px; }
.command-section-title {
  padding: 8px 10px;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ac-muted);
  font-weight: 800;
}
.command-section-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
}
.command-result {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  padding: 12px;
  border-radius: 16px;
  color: inherit;
  border: 1px solid transparent;
}
.command-result:hover,
.command-result.is-active {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.08);
}
html[data-theme="light"] .command-result:hover,
html[data-theme="light"] .command-result.is-active {
  background: rgba(98, 102, 241, 0.08);
  border-color: rgba(98, 102, 241, 0.14);
}
.command-result-icon,
.command-result-arrow {
  width: 38px;
  height: 38px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.06);
  color: var(--ac-text);
  flex: 0 0 auto;
}
html[data-theme="light"] .command-result-icon,
html[data-theme="light"] .command-result-arrow {
  background: rgba(20, 28, 48, 0.05);
}
.command-result-icon i,
.command-result-icon svg,
.command-result-arrow i,
.command-result-arrow svg { width: 18px; height: 18px; }
.command-result-copy {
  min-width: 0;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.command-result-copy strong {
  font-size: 14px;
  color: var(--ac-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.command-result-copy small {
  font-size: 12px;
  color: var(--ac-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.command-empty-state {
  min-height: 220px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  text-align: center;
  color: var(--ac-muted);
  padding: 20px;
}
.command-empty-state i,
.command-empty-state svg { width: 28px; height: 28px; }
.command-empty-state strong { color: var(--ac-text); font-size: 16px; }
.command-palette-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-top: 1px solid rgba(255,255,255,0.07);
  color: var(--ac-muted);
  font-size: 12px;
}
html[data-theme="light"] .command-palette-foot { border-top-color: rgba(20, 28, 48, 0.08); }
.command-palette-foot kbd {
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.08);
  border-bottom-width: 2px;
  border-radius: 8px;
  color: var(--ac-text);
  padding: 2px 7px;
  font-size: 11px;
  font-weight: 700;
}
html[data-theme="light"] .command-palette-foot kbd {
  background: rgba(20, 28, 48, 0.05);
  border-color: rgba(20, 28, 48, 0.10);
}
body.command-open { overflow: hidden; }
.gs-hero .workspace-actions strong { color: inherit; }
.gs-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 18px 0 20px;
  flex-wrap: wrap;
}
.gs-inline-form { flex: 1 1 420px; }
.gs-layout { display: block; }
.gs-group + .gs-group { margin-top: 20px; }
.gs-group-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.gs-group-head h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 800;
  color: var(--ac-text);
}
.gs-group-head span {
  font-size: 12px;
  color: var(--ac-muted);
  font-weight: 700;
}
.gs-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.gs-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px;
  border-radius: 18px;
  border: 1px solid var(--ac-border);
  background: var(--ac-card);
  text-decoration: none;
  color: inherit;
}
html[data-theme="light"] .gs-item {
  background: rgba(255,255,255,0.85);
}
.gs-item:hover {
  transform: translateY(-1px);
  border-color: rgba(98,102,241,.24);
  box-shadow: 0 18px 32px rgba(22,29,56,.08);
}
.gs-item-icon,
.gs-item-go {
  width: 42px;
  height: 42px;
  border-radius: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(98,102,241,.10);
  color: var(--ac-text);
  flex: 0 0 auto;
}
.gs-item-copy {
  min-width: 0;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.gs-item-copy strong {
  font-size: 14px;
  color: var(--ac-text);
}
.gs-item-copy small {
  font-size: 12px;
  color: var(--ac-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (max-width: 820px) {
  .command-palette { top: 14px; width: calc(100vw - 16px); }
  .command-palette-foot { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 640px) {
  .command-palette-head { padding: 14px; gap: 10px; }
  .command-input { font-size: 14px; }
  .gs-item { padding: 12px; border-radius: 16px; }
  .gs-item-copy small,
  .command-result-copy small { white-space: normal; }
}


.gs-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  padding: 14px;
  border-radius: 20px;
  border: 1px solid var(--ac-border);
  background: var(--ac-card);
}
html[data-theme="light"] .gs-card { background: rgba(255,255,255,0.90); }
.gs-card:hover {
  transform: translateY(-1px);
  border-color: rgba(98,102,241,.24);
  box-shadow: 0 18px 32px rgba(22,29,56,.08);
}
.gs-item-main { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.gs-item-head {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  color: inherit;
}
.gs-meta-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.gs-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 28px;
  padding: 0 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
  background: rgba(98,102,241,.10);
  color: var(--ac-text);
}
.gs-path {
  font-size: 12px;
  color: var(--ac-muted);
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.gs-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.gs-action {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 0 12px;
  border-radius: 12px;
  border: 1px solid var(--ac-border);
  background: rgba(255,255,255,0.04);
  color: var(--ac-text);
  text-decoration: none;
  font-size: 13px;
  font-weight: 700;
}
html[data-theme="light"] .gs-action { background: rgba(20,28,48,.03); }
.gs-action.is-primary {
  background: linear-gradient(135deg, rgba(98,102,241,.16), rgba(168,85,247,.16));
  border-color: rgba(98,102,241,.22);
}
.gs-action.is-success {
  background: rgba(16,185,129,.16);
  border-color: rgba(16,185,129,.28);
}
.gs-action i,
.gs-action svg { width: 15px; height: 15px; }
.gs-filter-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 8px 0 18px;
}
.gs-filter {
  min-height: 36px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--ac-border);
  background: transparent;
  color: var(--ac-text);
  font-size: 13px;
  font-weight: 800;
}
.gs-filter.is-active {
  background: linear-gradient(135deg, rgba(98,102,241,.16), rgba(168,85,247,.16));
  border-color: rgba(98,102,241,.28);
}
.gs-filter-empty { margin-top: 18px; }
.gs-recent-searches {
  margin-bottom: 18px;
  padding: 16px;
  border-radius: 18px;
  border: 1px solid var(--ac-border);
  background: var(--ac-card);
}
html[data-theme="light"] .gs-recent-searches { background: rgba(255,255,255,0.88); }
.gs-recent-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.gs-recent-head strong { font-size: 14px; color: var(--ac-text); }
.gs-recent-list {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.gs-recent-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 0 12px;
  border-radius: 999px;
  border: 1px solid var(--ac-border);
  background: rgba(98,102,241,.08);
  color: var(--ac-text);
  text-decoration: none;
  font-size: 13px;
  font-weight: 700;
}
.gs-recent-chip i,
.gs-recent-chip svg { width: 14px; height: 14px; }
@media (max-width: 920px) {
  .gs-card { grid-template-columns: 1fr; }
  .gs-actions { justify-content: flex-start; }
}
@media (max-width: 640px) {
  .gs-card { padding: 12px; border-radius: 16px; }
  .gs-actions { gap: 6px; }
  .gs-action { min-height: 36px; padding: 0 10px; font-size: 12px; }
  .gs-filter-row { gap: 8px; }
  .gs-recent-head { flex-direction: column; align-items: flex-start; }
}


/* v18.14 — quota & policy center */
.policy-alert{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:18px;border:1px solid rgba(149,0,131,.12);background:linear-gradient(180deg,rgba(149,0,131,.06),rgba(99,102,241,.05));color:#2f2642;margin-bottom:16px;box-shadow:0 12px 30px rgba(17,24,39,.06)}
.policy-alert i{width:18px;height:18px;flex:0 0 auto;margin-top:2px;color:#7c3aed}
.policy-alert.is-warn{border-color:rgba(245,158,11,.25);background:linear-gradient(180deg,rgba(245,158,11,.10),rgba(255,255,255,.96))}
.policy-alert.is-danger{border-color:rgba(220,38,38,.22);background:linear-gradient(180deg,rgba(220,38,38,.08),rgba(255,255,255,.96))}
.policy-alert strong{display:block;margin-bottom:2px}
.quota-policy-grid .stat-help{margin-top:8px;color:var(--ac-muted);font-size:12px;line-height:1.5}
.quota-policy-card .surface-note{font-size:13px;line-height:1.65}
.quota-policy-list{display:grid;gap:10px}
.quota-policy-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--ac-stroke);border-radius:14px;background:var(--ac-panel-2)}
.policy-tips{margin:0;padding-left:18px;color:var(--ac-muted);display:grid;gap:10px}
.policy-tips li{line-height:1.55}
.quota-table-wrap .data-table td{vertical-align:top}
.quota-policy-meter{min-width:220px}
.quota-policy-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:13px}
.quota-policy-head span{color:var(--ac-muted);font-size:12px}
.quota-state-stack{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.quota-mini-fill.quota-danger,.quota-fill.quota-danger{background:linear-gradient(90deg,#ef4444,#f97316)!important}
@media (max-width: 991.98px){.quota-policy-meter{min-width:0}.policy-alert{padding:12px 14px;border-radius:16px}}


/* Access & permissions center */
.access-topbar{gap:16px;flex-wrap:wrap;}
.access-topbar-tools{flex-wrap:wrap;justify-content:flex-end;}
.access-tab-switch .btn.is-active,
.btn-group .btn.is-active{background:var(--ac-blue);color:#fff;border-color:var(--ac-blue);}
.panel-premium{background:var(--ac-panel);border:1px solid var(--ac-stroke);border-radius:22px;padding:20px;box-shadow:var(--ac-shadow-sm);}
.panel-head{margin-bottom:16px;}
.panel-title{font-size:18px;font-weight:800;color:var(--ac-text);}
.panel-subtitle{font-size:13px;color:var(--ac-muted);}
.access-list{display:flex;flex-direction:column;gap:12px;}
.access-card,.access-manage-row{background:var(--ac-card);border:1px solid var(--ac-stroke);border-radius:18px;padding:14px 16px;box-shadow:var(--ac-shadow-xs, none);}
.access-card-top,.access-manage-row{display:flex;align-items:flex-start;gap:14px;}
.access-card-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:rgba(76,110,245,.10);color:var(--ac-blue);flex-shrink:0;}
.access-card-main{flex:1;min-width:0;}
.access-card-title{font-size:15px;font-weight:800;color:var(--ac-text);line-height:1.2;}
.access-card-subtitle{font-size:12px;color:var(--ac-muted);margin-top:4px;}
.access-card-side{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.access-perms,.access-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.access-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:rgba(76,110,245,.08);border:1px solid rgba(76,110,245,.12);color:var(--ac-text);font-size:11px;font-weight:700;}
.access-chip.is-success{background:rgba(22,163,74,.10);border-color:rgba(22,163,74,.16);}
.access-chip.is-warn{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.18);}
.access-chip.is-muted{background:rgba(148,163,184,.12);border-color:rgba(148,163,184,.16);color:var(--ac-muted);}
.access-card-meta{margin-top:12px;font-size:12px;color:var(--ac-muted);}
.access-inline-link{margin-top:10px;padding:10px 12px;border-radius:14px;background:var(--ac-bg-soft);border:1px dashed var(--ac-stroke);font-size:12px;color:var(--ac-muted);word-break:break-all;}
.access-manage-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.access-empty-state{padding:24px 18px;}
@media (max-width: 991.98px){
  .access-topbar-tools{justify-content:flex-start;}
  .access-card-top,.access-manage-row{flex-wrap:wrap;}
  .access-card-side,.access-manage-actions{width:100%;justify-content:flex-start;}
}


/* v18.17 safe responsive + navigation refine */
.sidebar-brand-main{max-width:calc(100% - 92px);}
.sidebar-brand-logo{display:block;max-width:100%;height:auto;max-height:32px;object-fit:contain;}
.side-link{overflow:hidden;}
.side-link .side-tx{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.side-link .badge-pill{flex-shrink:0;}
.sidebar-brand-tools .btn-icon,
.mobile-header .btn-icon,
.mobile-bell-link{position:relative;overflow:visible;}

.mobile-header{
  gap:8px;
  padding:10px 12px;
}
.mobile-header__left,
.mobile-header__tools{
  display:flex;
  align-items:center;
  gap:6px;
  flex:0 0 auto;
}
.mobile-header__brand{
  min-width:0;
  flex:1 1 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 6px;
  text-decoration:none;
}
.mobile-brand-logo{
  display:block;
  max-width:100%;
  width:auto;
  height:24px;
  max-height:24px;
  object-fit:contain;
}
.mobile-bell-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.mobile-offcanvas-brand{
  min-width:0;
  display:flex;
  align-items:center;
}
.mobile-offcanvas-body{
  padding:14px 10px 16px !important;
  overflow-y:auto;
}
.mobile-nav-actions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}
.mobile-nav-actions > .btn,
.mobile-nav-actions > a.btn{
  justify-content:center;
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.mobile-nav-actions > :last-child{
  grid-column:1 / -1;
}

@media (max-width:1260px) and (min-width:992px){
  .sidebar{width:244px;flex-basis:244px;}
  .sidebar-brand{padding:18px 12px 14px;gap:8px;}
  .sidebar-brand-main{max-width:calc(100% - 84px);}
  .sidebar-brand-logo{max-height:28px;}
  .side-link{padding:9px 10px;font-size:13px;}
}

@media (max-width:991px){
  .topbar{padding:10px 12px;gap:10px;}
  .topbar-actions{
    width:100%;
    margin-left:0;
    flex-wrap:wrap;
    justify-content:flex-start;
    gap:8px;
  }
  .topbar-actions > .btn,
  .topbar-actions > .btn-icon,
  .topbar-actions > .topbar-sort,
  .topbar-actions > .topbar-search{
    min-width:0;
  }
  .topbar-actions > .topbar-search{
    order:1;
    flex:1 1 100%;
    width:100%;
    min-width:0;
  }
  .topbar-actions > .topbar-sort{
    order:2;
    flex:1 1 180px;
    width:auto;
    min-width:0;
  }
  .topbar-actions > #btnSelectionMode,
  .topbar-actions > [id="btnSelectionMode"]{
    order:3;
    flex:1 1 auto;
    justify-content:center;
  }
  .topbar-actions > #btnToggleView,
  .topbar-actions > [id="btnToggleView"]{
    order:4;
    flex:0 0 auto;
  }
  .topbar-sort .form-select{min-width:0;width:100%;}
  .workspace-hero{grid-template-columns:1fr;}
  .workspace-actions{width:100%;}
  .workspace-actions .btn{justify-content:center;}
  .stats-grid{grid-template-columns:1fr 1fr;}
}

@media (max-width:767.98px){
  .topbar-actions > .topbar-sort,
  .topbar-actions > #btnSelectionMode,
  .topbar-actions > [id="btnSelectionMode"]{
    flex:1 1 calc(50% - 4px);
  }
  .admin-toolbar-filters{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  .admin-toolbar-filters .form-select,
  .admin-toolbar-search{min-width:0;width:100%;}
}

@media (max-width:575.98px){
  .mobile-header__tools{gap:4px;}
  .mobile-brand-logo{height:22px;max-height:22px;}
  .topbar-actions > .topbar-sort,
  .topbar-actions > #btnSelectionMode,
  .topbar-actions > [id="btnSelectionMode"]{
    flex:1 1 100%;
  }
  .stats-grid{grid-template-columns:1fr;}
  .admin-toolbar-filters{grid-template-columns:1fr;}
  .mobile-nav-actions{grid-template-columns:1fr;}
  .mobile-nav-actions > :last-child{grid-column:auto;}
}

@media (max-width:420px){
  .mobile-header__tools [data-theme-toggle]{display:none;}
}

@media (max-width:360px){
  .mobile-header__tools [data-command-launch]{display:none;}
}


/* v18.19 runtime + access + notifications hotfix */
.workspace-quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.workspace-quick-card{display:flex;align-items:center;gap:14px;padding:18px 18px;border-radius:22px;background:var(--ac-card);border:1px solid var(--ac-stroke);box-shadow:var(--ac-shadow-s);min-height:104px;}
.workspace-quick-icon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:rgba(10,132,255,.10);color:var(--ac-blue);flex-shrink:0;}
.workspace-quick-icon i,.workspace-quick-icon svg{width:22px;height:22px;}
.workspace-quick-body{display:flex;flex-direction:column;gap:4px;min-width:0;}
.workspace-quick-body strong{font-size:32px;line-height:1;color:var(--ac-text);font-weight:800;}
.workspace-quick-body span{font-size:13px;line-height:1.45;color:var(--ac-muted);font-weight:600;}
.notif-bulk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;width:100%;margin-bottom:12px;padding:14px 16px;border:1px solid var(--ac-stroke);border-radius:18px;background:var(--ac-card);box-shadow:var(--ac-shadow-xs);}
.notif-bulk-label{font-size:13px;font-weight:700;color:var(--ac-text);}
.notif-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.notif-check{display:inline-flex;align-items:center;gap:8px;padding:0 10px;height:36px;border-radius:999px;border:1px solid var(--ac-stroke);background:rgba(148,163,184,.08);font-size:12px;font-weight:700;color:var(--ac-text);cursor:pointer;}
.notif-check input{margin:0;accent-color:var(--ac-blue);}
.search-empty-state .empty-state-actions{margin-top:12px;display:flex;justify-content:center;}
@media (max-width: 1199.98px){.workspace-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width: 767.98px){.workspace-quick-grid{grid-template-columns:1fr;}.workspace-quick-card{padding:16px;border-radius:18px;}.workspace-quick-body strong{font-size:28px;}.notif-bulk-toolbar{padding:12px 14px;}.notif-bulk-actions{width:100%;}.notif-bulk-actions .btn{flex:1 1 180px;justify-content:center;}}
\n\n/* v18.21 compact dashboard + safe desktop clipping */\n.app-shell,\n.main,\n.content,\n.content-inner,\n.topbar,\n.topbar-actions,\n.cloud-grid {\n  min-width: 0;\n}\n.app-shell,\n.main {\n  width: 100%;\n  overflow-x: hidden;\n}\n.sidebar {\n  padding-left: 6px;\n}\n.sidebar-brand,\n.sidebar-quota,\n.sidebar-user {\n  padding-left: 14px;\n  padding-right: 12px;\n}\n.sidebar-nav {\n  padding-left: 8px;\n  padding-right: 10px;\n}\n.side-link {\n  overflow: visible;\n}\n.side-link .side-ic,\n.cloud-card-icon,\n.file-type-icon {\n  overflow: visible;\n}\n.side-link.active::before {\n  left: 4px;\n}\n\n.workspace-hero--smart {\n  gap: 14px;\n  padding: 18px 22px;\n  border-radius: 22px;\n  margin-bottom: 14px;\n}\n.workspace-hero--smart::after {\n  width: 180px;\n  height: 180px;\n  inset: auto -40px -70px auto;\n}\n.workspace-hero--smart .workspace-title {\n  font-size: clamp(24px, 2.6vw, 30px);\n}\n.workspace-hero--smart .workspace-subtitle {\n  margin-top: 8px;\n  max-width: 820px;\n  font-size: 13px;\n  line-height: 1.55;\n}\n.workspace-hero-inline-meta {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  margin-top: 12px;\n}\n.workspace-hero-inline-meta span {\n  display: inline-flex;\n  align-items: center;\n  gap: 7px;\n  padding: 8px 11px;\n  border-radius: 999px;\n  background: rgba(255,255,255,.06);\n  border: 1px solid rgba(255,255,255,.08);\n  color: var(--ac-text);\n  font-size: 12px;\n  font-weight: 700;\n}\nhtml[data-theme="light"] .workspace-hero-inline-meta span {\n  background: rgba(0,0,0,.035);\n  border-color: rgba(0,0,0,.06);\n}\n.workspace-hero-inline-meta i,\n.workspace-hero-inline-meta svg {\n  width: 14px;\n  height: 14px;\n  color: var(--ac-blue);\n}\n.workspace-hero--smart .workspace-actions {\n  margin-top: 14px;\n}\n.workspace-hero--smart .workspace-meta {\n  grid-template-columns: repeat(3, minmax(0,1fr));\n  gap: 10px;\n}\n.workspace-hero--smart .hero-metric {\n  min-height: 0;\n  padding: 12px 14px;\n}\n.workspace-hero--smart .hero-metric-label {\n  margin-bottom: 6px;\n}\n.workspace-hero--smart .hero-metric-value {\n  font-size: 18px;\n}\n.workspace-hero--smart .hero-metric-sub {\n  margin-top: 6px;\n  font-size: 11.5px;\n}\n\n.workspace-overview-disclosure {\n  margin-top: 18px;\n  border: 1px solid var(--ac-stroke);\n  border-radius: 22px;\n  background: var(--ac-card);\n  box-shadow: var(--ac-shadow-xs);\n  overflow: hidden;\n}\n.workspace-overview-disclosure > summary {\n  list-style: none;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 14px;\n  padding: 16px 18px;\n  cursor: pointer;\n  user-select: none;\n}\n.workspace-overview-disclosure > summary::-webkit-details-marker {\n  display: none;\n}\n.workspace-overview-copy {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n  min-width: 0;\n}\n.workspace-overview-title {\n  font-size: 15px;\n  line-height: 1.2;\n  font-weight: 800;\n  color: var(--ac-text);\n}\n.workspace-overview-subtitle {\n  font-size: 12px;\n  color: var(--ac-muted);\n  line-height: 1.45;\n}\n.workspace-overview-toggle {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-width: 118px;\n  padding: 8px 12px;\n  border-radius: 999px;\n  border: 1px solid var(--ac-stroke);\n  background: rgba(10,132,255,.08);\n  color: var(--ac-text);\n  font-size: 12px;\n  font-weight: 800;\n}\n.workspace-overview-disclosure[open] .workspace-overview-toggle {\n  background: rgba(10,132,255,.14);\n}\n.workspace-overview-disclosure[open] .workspace-overview-toggle::after {\n  content: ' · Chiudi';\n}\n.workspace-overview-body {\n  padding: 0 18px 18px;\n}\n.workspace-overview-body .workspace-home-grid {\n  margin-top: 2px;\n}\n\n@media (max-width: 1480px) {\n  .topbar {\n    flex-wrap: wrap;\n    align-items: flex-start;\n  }\n  .breadcrumb-wrap {\n    flex: 1 1 100%;\n    width: 100%;\n    order: 1;\n  }\n  .topbar-actions {\n    order: 2;\n    width: 100%;\n    margin-left: 0;\n    justify-content: flex-end;\n    flex-wrap: wrap;\n  }\n}\n@media (max-width: 1199px) {\n  .workspace-hero--smart .workspace-meta {\n    grid-template-columns: repeat(3, minmax(0,1fr));\n  }\n}\n@media (max-width: 991px) {\n  .workspace-hero--smart {\n    padding: 16px;\n  }\n  .workspace-hero--smart .workspace-meta {\n    grid-template-columns: 1fr;\n  }\n  .workspace-overview-disclosure > summary {\n    padding: 14px 16px;\n  }\n  .workspace-overview-body {\n    padding: 0 14px 14px;\n  }\n}\n@media (max-width: 767px) {\n  .workspace-hero-inline-meta {\n    gap: 6px;\n  }\n  .workspace-hero-inline-meta span {\n    width: 100%;\n    justify-content: flex-start;\n  }\n  .workspace-overview-disclosure > summary {\n    flex-direction: column;\n    align-items: flex-start;\n  }\n}\n

/* ── HOTFIX V18.22 · file cards usability / clipping ─────────── */
.cloud-grid:not(.list-view) .cloud-card {
  min-height: 206px;
}
.cloud-grid:not(.list-view) .item-select-toggle {
  top: 8px;
  left: 8px;
  width: 26px;
  height: 26px;
}
.cloud-grid:not(.list-view) .cloud-card-actions {
  top: 8px;
  right: 8px;
  gap: 4px;
  flex-direction: column;
  align-items: center;
}
.cloud-grid:not(.list-view) .cloud-card-actions .btn-icon,
.cloud-grid:not(.list-view) .cloud-card-actions > a.btn-icon {
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: rgba(255,255,255,.92);
  border-color: rgba(15,23,42,.08);
  color: #475569;
  box-shadow: 0 6px 16px rgba(15,23,42,.08);
}
html[data-theme="dark"] .cloud-grid:not(.list-view) .cloud-card-actions .btn-icon,
html[data-theme="dark"] .cloud-grid:not(.list-view) .cloud-card-actions > a.btn-icon {
  background: rgba(12,18,38,.88);
  border-color: rgba(255,255,255,.12);
  color: rgba(240,244,255,.84);
  box-shadow: 0 8px 20px rgba(0,0,0,.24);
}
.cloud-grid:not(.list-view) .cloud-card-icon {
  padding: 56px 12px 10px;
}
.cloud-grid:not(.list-view) .file-type-icon,
.cloud-grid:not(.list-view) .cloud-card-thumb {
  width: 54px;
  height: 54px;
}
.cloud-grid:not(.list-view) .cloud-card-body {
  padding: 0 10px 14px;
}
.cloud-grid:not(.list-view) .cloud-card-name {
  white-space: normal;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  line-clamp: 3;
  overflow-wrap: anywhere;
  word-break: break-word;
  min-height: 48px;
  line-height: 1.3;
}
.cloud-grid:not(.list-view) .cloud-card-meta {
  margin-top: 4px;
}

.cloud-grid.list-view {
  gap: 8px;
}
.cloud-grid.list-view .cloud-card {
  min-height: 68px;
  padding: 8px 0;
  border-radius: 16px;
}
.cloud-grid.list-view .item-select-toggle {
  top: 50%;
  left: 14px;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
}
.cloud-grid.list-view .cloud-card:hover .item-select-toggle,
.cloud-grid.list-view .cloud-card.is-selected .item-select-toggle,
.selection-mode .cloud-grid.list-view .item-select-toggle {
  transform: translateY(-50%);
}
.cloud-grid.list-view .cloud-card-icon {
  padding: 0 0 0 52px;
}
.cloud-grid.list-view .file-type-icon,
.cloud-grid.list-view .cloud-card-thumb {
  width: 38px;
  height: 38px;
  border-radius: 10px;
}
.cloud-grid.list-view .file-type-icon i,
.cloud-grid.list-view .file-type-icon svg {
  width: 18px;
  height: 18px;
}
.cloud-grid.list-view .cloud-card-body {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 14px;
  min-width: 0;
  padding: 0 120px 0 12px;
}
.cloud-grid.list-view .cloud-card-name {
  min-width: 0;
  margin: 0;
  /* FIX 2026-04-24: nome completo su 2 righe invece di ellipsis singola */
  white-space: normal;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-clamp: 2;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.3;
}
.cloud-grid.list-view .cloud-card-meta {
  min-width: 90px;
  max-width: 140px;
  margin: 0;
  text-align: right;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cloud-grid.list-view .cloud-card-actions {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  padding-right: 0;
  gap: 6px;
  background: transparent;
}
.cloud-grid.list-view .cloud-card-actions .btn-icon,
.cloud-grid.list-view .cloud-card-actions > a.btn-icon {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: rgba(255,255,255,.92);
  border-color: rgba(15,23,42,.08);
  box-shadow: 0 6px 16px rgba(15,23,42,.08);
}
html[data-theme="dark"] .cloud-grid.list-view .cloud-card-actions .btn-icon,
html[data-theme="dark"] .cloud-grid.list-view .cloud-card-actions > a.btn-icon {
  background: rgba(12,18,38,.88);
  border-color: rgba(255,255,255,.12);
  box-shadow: 0 8px 20px rgba(0,0,0,.24);
}

@media (max-width: 1399px) {
  .cloud-grid.list-view .cloud-card-body {
    padding-right: 104px;
  }
}
@media (max-width: 991px) {
  .cloud-grid:not(.list-view) .cloud-card {
    min-height: 188px;
  }
  .cloud-grid.list-view .cloud-card {
    min-height: 64px;
  }
  .cloud-grid.list-view .cloud-card-body {
    grid-template-columns: minmax(0,1fr);
    padding-right: 112px;
    gap: 4px;
  }
  .cloud-grid.list-view .cloud-card-meta {
    max-width: 100%;
    text-align: left;
  }
}
@media (max-width: 640px) {
  .cloud-grid.list-view .cloud-card {
    padding: 10px 0 42px;
    align-items: flex-start;
  }
  .cloud-grid.list-view .item-select-toggle {
    top: 18px;
    transform: none;
  }
  .cloud-grid.list-view .cloud-card:hover .item-select-toggle,
  .cloud-grid.list-view .cloud-card.is-selected .item-select-toggle,
  .selection-mode .cloud-grid.list-view .item-select-toggle {
    transform: none;
  }
  .cloud-grid.list-view .cloud-card-icon {
    padding-left: 48px;
  }
  .cloud-grid.list-view .cloud-card-body {
    padding-right: 12px;
  }
  .cloud-grid.list-view .cloud-card-actions {
    top: auto;
    bottom: 10px;
    right: 12px;
    transform: none;
  }
}


/* ── HOTFIX V18.23 · list view actions rail alignment ─────────── */
.cloud-grid.list-view .cloud-card {
  overflow: visible;
}
.cloud-grid.list-view .cloud-card-body {
  padding-right: 216px;
  align-items: center;
}
.cloud-grid.list-view .cloud-card-meta {
  min-width: 108px;
  max-width: 132px;
  text-align: right;
}
.cloud-grid.list-view .cloud-card-actions {
  right: 14px;
  gap: 4px;
  padding: 5px;
  border-radius: 999px;
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(15,23,42,.08);
  box-shadow: 0 8px 22px rgba(15,23,42,.10);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.cloud-grid.list-view .cloud-card-actions .btn-icon,
.cloud-grid.list-view .cloud-card-actions > a.btn-icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  box-shadow: none;
}
html[data-theme="dark"] .cloud-grid.list-view .cloud-card-actions {
  background: rgba(12,18,38,.90);
  border-color: rgba(255,255,255,.12);
  box-shadow: 0 10px 24px rgba(0,0,0,.28);
}
@media (max-width: 1480px) {
  .cloud-grid.list-view .cloud-card-body {
    padding-right: 198px;
  }
}
@media (max-width: 1199px) {
  .cloud-grid.list-view .cloud-card-body {
    padding-right: 184px;
  }
  .cloud-grid.list-view .cloud-card-meta {
    min-width: 96px;
    max-width: 120px;
  }
}
@media (max-width: 991px) {
  .cloud-grid.list-view .cloud-card-body {
    padding-right: 160px;
  }
  .cloud-grid.list-view .cloud-card-actions {
    gap: 3px;
    padding: 4px;
  }
  .cloud-grid.list-view .cloud-card-actions .btn-icon,
  .cloud-grid.list-view .cloud-card-actions > a.btn-icon {
    width: 26px;
    height: 26px;
  }
}
@media (max-width: 767px) {
  .cloud-grid.list-view .cloud-card-body {
    padding-right: 12px;
  }
  .cloud-grid.list-view .cloud-card-meta {
    text-align: left;
  }
  .cloud-grid.list-view .cloud-card-actions {
    right: 10px;
  }
}

/* v18.24 safe dark/light logo visibility hotfix */
.sidebar-brand .brand-logo--dark,
.mobile-header__brand .brand-logo--dark,
.mobile-offcanvas-brand .brand-logo--dark,
.auth-logo .brand-logo--dark,
.home-logo .brand-logo--dark {
  display: block !important;
}

.sidebar-brand .brand-logo--light,
.mobile-header__brand .brand-logo--light,
.mobile-offcanvas-brand .brand-logo--light,
.auth-logo .brand-logo--light,
.home-logo .brand-logo--light {
  display: none !important;
}

html[data-theme="light"] .sidebar-brand .brand-logo--dark,
html[data-theme="light"] .mobile-header__brand .brand-logo--dark,
html[data-theme="light"] .mobile-offcanvas-brand .brand-logo--dark,
html[data-theme="light"] .auth-logo .brand-logo--dark,
html[data-theme="light"] .home-logo .brand-logo--dark,
body.theme-light .sidebar-brand .brand-logo--dark,
body.theme-light .mobile-header__brand .brand-logo--dark,
body.theme-light .mobile-offcanvas-brand .brand-logo--dark,
body.theme-light .auth-logo .brand-logo--dark,
body.theme-light .home-logo .brand-logo--dark,
html.theme-light .sidebar-brand .brand-logo--dark,
html.theme-light .mobile-header__brand .brand-logo--dark,
html.theme-light .mobile-offcanvas-brand .brand-logo--dark,
html.theme-light .auth-logo .brand-logo--dark,
html.theme-light .home-logo .brand-logo--dark {
  display: none !important;
}

html[data-theme="light"] .sidebar-brand .brand-logo--light,
html[data-theme="light"] .mobile-header__brand .brand-logo--light,
html[data-theme="light"] .mobile-offcanvas-brand .brand-logo--light,
html[data-theme="light"] .auth-logo .brand-logo--light,
html[data-theme="light"] .home-logo .brand-logo--light,
body.theme-light .sidebar-brand .brand-logo--light,
body.theme-light .mobile-header__brand .brand-logo--light,
body.theme-light .mobile-offcanvas-brand .brand-logo--light,
body.theme-light .auth-logo .brand-logo--light,
body.theme-light .home-logo .brand-logo--light,
html.theme-light .sidebar-brand .brand-logo--light,
html.theme-light .mobile-header__brand .brand-logo--light,
html.theme-light .mobile-offcanvas-brand .brand-logo--light,
html.theme-light .auth-logo .brand-logo--light,
html.theme-light .home-logo .brand-logo--light {
  display: block !important;
}


/* v18.25 public site contact/cookie/accessibility/whatsapp */
.cloud-contact-modal {
  border-radius: 28px;
  border: 1px solid rgba(10,132,255,.18);
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(247,250,255,.98));
  box-shadow: 0 30px 80px rgba(15,23,42,.18);
}
html[data-theme="dark"] .cloud-contact-modal {
  background: linear-gradient(180deg, rgba(8,16,34,.98), rgba(6,12,26,.98));
  border-color: rgba(96,165,250,.22);
  box-shadow: 0 30px 80px rgba(0,0,0,.45);
}
.cloud-modal-kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  border-radius: 999px;
  background: rgba(10,132,255,.1);
  color: var(--ac-blue);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.btn-close-reset {
  filter: none;
  opacity: .7;
}
html[data-theme="dark"] .btn-close-reset {
  filter: invert(1) grayscale(1);
}
.public-legal-links {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 18px;
  font-size: 13px;
}
.public-legal-links a {
  color: var(--ac-muted);
  text-decoration: none;
}
.public-legal-links a:hover {
  color: var(--ac-blue);
}
.legal-copy {
  display: grid;
  gap: 16px;
}
.legal-copy h2 {
  margin: 0;
  font-size: 18px;
  font-weight: 800;
}
.legal-copy p {
  margin: 0;
  color: var(--ac-muted);
  line-height: 1.7;
  font-size: 14px;
}
.floating-whatsapp {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 1200;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 56px;
  padding: 0 18px;
  border-radius: 999px;
  background: linear-gradient(135deg, #25D366, #19b955);
  color: #fff !important;
  text-decoration: none !important;
  box-shadow: 0 16px 36px rgba(37,211,102,.28);
  font-weight: 800;
}
.floating-whatsapp:hover {
  transform: translateY(-1px);
  box-shadow: 0 20px 42px rgba(37,211,102,.32);
}
.floating-whatsapp__icon {
  display: inline-flex;
  width: 24px;
  height: 24px;
  align-items: center;
  justify-content: center;
}
.floating-whatsapp__text {
  font-size: 14px;
  letter-spacing: -.01em;
}
.cookie-notice-bar {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 88px;
  z-index: 1190;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px 18px;
  border-radius: 20px;
  border: 1px solid rgba(15,23,42,.08);
  background: rgba(255,255,255,.95);
  backdrop-filter: blur(16px);
  box-shadow: 0 18px 44px rgba(15,23,42,.12);
}
html[data-theme="dark"] .cookie-notice-bar {
  background: rgba(8,16,34,.92);
  border-color: rgba(148,163,184,.16);
  box-shadow: 0 18px 44px rgba(0,0,0,.35);
}
.cookie-notice-bar__text {
  display: grid;
  gap: 4px;
  font-size: 13px;
}
.cookie-notice-bar__text strong {
  font-size: 13px;
  font-weight: 800;
}
.cookie-notice-bar__text span {
  color: var(--ac-muted);
  line-height: 1.6;
}
.cookie-notice-bar__text a {
  color: var(--ac-blue);
  text-decoration: none;
}
.cookie-notice-bar__actions {
  flex-shrink: 0;
}
@media (max-width: 767px) {
  .cookie-notice-bar {
    flex-direction: column;
    align-items: flex-start;
    bottom: 84px;
  }
  .floating-whatsapp {
    right: 14px;
    left: 14px;
    justify-content: center;
  }
}


/* ─────────────────────────────────────────────────────────────
   ADVCloud V3 — Upload queue stile Google Drive + download assistito
   ───────────────────────────────────────────────────────────── */
.upload-queue-panel {
  position: fixed;
  right: 22px;
  bottom: 22px;
  width: min(420px, calc(100vw - 24px));
  max-height: min(560px, calc(100vh - 44px));
  z-index: 2147482500;
  display: none;
  flex-direction: column;
  overflow: hidden;
  border-radius: 18px;
  background: rgba(18, 22, 31, .94);
  color: #fff;
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: 0 24px 80px rgba(0,0,0,.34);
  backdrop-filter: blur(22px);
}
.upload-queue-panel.visible { display: flex; }
.upload-queue-panel.minimized #uploadQueueList,
.upload-queue-panel.minimized .upload-queue-list,
.upload-queue-panel.minimized .upload-queue-overall { display: none; }

.upload-queue-header {
  padding: 13px 14px;
  min-height: 58px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: rgba(255,255,255,.06);
  border-bottom: 1px solid rgba(255,255,255,.12);
}
.upload-queue-title-wrap { display:flex; flex-direction:column; min-width:0; gap:2px; }
#uploadQueueTitle { font-size: 14px; font-weight: 800; letter-spacing:-.01em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#uploadQueueSubtitle { font-size: 11px; color: rgba(255,255,255,.68); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.upload-queue-actions { display:flex; align-items:center; gap:4px; }
.upload-queue-header .btn-icon {
  width: 28px !important;
  height: 28px !important;
  border-radius: 10px;
  color: #fff;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.10);
}
.upload-queue-overall {
  height: 3px;
  width: 100%;
  background: rgba(255,255,255,.10);
}
.upload-queue-overall > div,
#uploadQueueOverallFill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #0A84FF, #64D2FF);
  transition: width .18s ease;
}

.upload-queue-list,
#uploadQueueList {
  overflow-y: auto;
  max-height: min(430px, calc(100vh - 150px));
  overscroll-behavior: contain;
}
.upload-queue-list::-webkit-scrollbar,
#uploadQueueList::-webkit-scrollbar { width: 8px; }
.upload-queue-list::-webkit-scrollbar-thumb,
#uploadQueueList::-webkit-scrollbar-thumb { background: rgba(255,255,255,.22); border-radius: 99px; }

.upload-item {
  padding: 12px 14px;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.10);
  background: transparent;
  color: #fff;
  backdrop-filter: none;
}
.upload-item:last-child { border-bottom: 0; border-radius: 0; }
.upload-row-main { display: flex; align-items: center; gap: 10px; min-width: 0; }
.upload-file-icon {
  width: 34px;
  height: 34px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: rgba(10,132,255,.18);
  color: #8ecbff;
  flex: 0 0 auto;
}
.upload-file-info { flex: 1; min-width: 0; }
.up-name {
  margin: 0 0 6px 0;
  color: #fff;
  font-size: 12px;
  font-weight: 750;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.up-progress-bar {
  height: 5px;
  background: rgba(255,255,255,.12);
  border-radius: 99px;
  overflow: hidden;
  margin: 0 0 6px 0;
}
.up-progress-fill {
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: linear-gradient(90deg, #0A84FF, #64D2FF);
  transition: width .15s ease;
}
.up-meta {
  display: flex;
  gap: 8px;
  align-items: center;
  min-width: 0;
  color: rgba(255,255,255,.64);
  font-size: 10.5px;
  font-weight: 650;
}
.up-status { margin-left: auto; max-width: 130px; white-space: nowrap; overflow:hidden; text-overflow:ellipsis; }
.up-status-up { color: #9ad6ff; }
.up-status-ok { color: #8cffb0; }
.up-status-err { color: #ff9b9b; }
.up-status-wait { color: rgba(255,255,255,.72); }
.upload-cancel {
  width: 28px !important;
  height: 28px !important;
  border-radius: 10px;
  color: #fff;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.08);
  flex: 0 0 auto;
}

/* Download assistito con selezione cartella/file */
.adv-download-panel {
  position: fixed;
  right: 22px;
  bottom: 22px;
  width: min(420px, calc(100vw - 24px));
  z-index: 2147482600;
  border-radius: 18px;
  overflow: hidden;
  background: rgba(18, 22, 31, .96);
  color: #fff;
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: 0 24px 80px rgba(0,0,0,.34);
  backdrop-filter: blur(22px);
}
.adv-download-head {
  padding: 13px 14px;
  background: rgba(255,255,255,.06);
  border-bottom: 1px solid rgba(255,255,255,.12);
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
}
.adv-download-title { font-size:14px; font-weight:800; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adv-download-sub { font-size:11px; color:rgba(255,255,255,.68); margin-top:2px; }
.adv-download-body { padding: 13px 14px; }
.adv-download-bar { height:6px; border-radius:99px; background:rgba(255,255,255,.12); overflow:hidden; margin-bottom:8px; }
.adv-download-fill { height:100%; width:0%; border-radius:inherit; background:linear-gradient(90deg,#0A84FF,#64D2FF); transition:width .15s ease; }
.adv-download-meta { display:flex; justify-content:space-between; gap:10px; color:rgba(255,255,255,.70); font-size:11px; font-weight:650; }
.adv-download-close {
  width:28px; height:28px; border-radius:10px; color:#fff; border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.08); display:grid; place-items:center; cursor:pointer;
}

@media (max-width: 640px) {
  .upload-queue-panel,
  .adv-download-panel {
    right: 12px;
    bottom: 12px;
    width: calc(100vw - 24px);
  }
}


/* 2026-05-12 — Transfer: rubrica personale per destinatari email */
.transfer-contacts-panel{
  margin-top:12px;
  padding:12px;
  border:1px solid var(--ac-border, #d8dee8);
  border-radius:16px;
  background:rgba(246,248,250,.72);
}
.transfer-contacts-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}
.transfer-contacts-head label{margin:0;font-weight:800;font-size:13px;color:var(--ac-text,#24292f);}
.transfer-contacts-list{
  display:flex;
  flex-direction:column;
  gap:7px;
  max-height:170px;
  overflow:auto;
  margin-top:8px;
  padding-right:3px;
}
.transfer-contact-chip{
  width:100%;
  display:flex;
  align-items:center;
  gap:9px;
  border:1px solid var(--ac-border,#d8dee8);
  background:#fff;
  border-radius:13px;
  padding:8px 10px;
  text-align:left;
  cursor:pointer;
  transition:background .15s ease, border-color .15s ease, transform .15s ease;
}
.transfer-contact-chip:hover{background:var(--ac-card-hover,#f6f8fa);border-color:rgba(56,139,253,.45);transform:translateY(-1px);}
.transfer-contact-avatar{
  width:26px;
  height:26px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-weight:900;
  color:#fff;
  background:linear-gradient(135deg,#7c3aed,#388bfd);
  flex:0 0 auto;
}
.transfer-contact-copy{min-width:0;display:flex;flex-direction:column;line-height:1.15;}
.transfer-contact-copy strong{font-size:12px;color:var(--ac-text,#24292f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.transfer-contact-copy em{font-style:normal;font-size:11px;color:var(--ac-muted,#6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.transfer-contact-empty{font-size:12px;color:var(--ac-muted,#6b7280);padding:8px 2px;}
.transfer-contacts-note{font-size:11px;color:var(--ac-muted,#6b7280);margin-top:8px;line-height:1.35;}

/* ─────────────────────────────────────────────────────────────
   PATCH 20260516-v3 — Fix coda upload modal Trasferimento + scroll modal
   Scope: SOLO #modalNewTransfer (non tocca altri modal/code upload).
   Risolve:
     - testi della coda upload illeggibili su sfondo chiaro
     - footer "Crea e Condividi" tagliato quando ci sono molti file
   ───────────────────────────────────────────────────────────── */

/* Fix overflow del modal Nuovo Trasferimento: layout flex con scroll
   interno solo sulla modal-body. Header e Footer ancorati. */
#modalNewTransfer.modal-overlay > .modal {
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 44px);
  overflow: hidden;
}
#modalNewTransfer.modal-overlay > .modal .modal-header { flex: 0 0 auto; }
#modalNewTransfer.modal-overlay > .modal .modal-footer { flex: 0 0 auto; }
#modalNewTransfer.modal-overlay > .modal .modal-body {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* Coda upload nel modal Trasferimento: colori leggibili su light theme */
#modalNewTransfer #trUploadQueue.upload-queue {
  background: transparent !important;
  border-radius: 12px;
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
#modalNewTransfer #trUploadQueue .upload-item {
  background: rgba(124, 58, 237, 0.05) !important;
  border: 1px solid rgba(124, 58, 237, 0.14) !important;
  border-radius: 10px !important;
  color: #1d1d1f !important;
  padding: 10px 12px !important;
  margin: 0 !important;
  backdrop-filter: none !important;
  display: flex;
  align-items: center;
  gap: 12px;
}
#modalNewTransfer #trUploadQueue .upload-item-name {
  color: #1d1d1f !important;
  font-weight: 700 !important;
  font-size: 13px !important;
}
#modalNewTransfer #trUploadQueue .upload-item-status {
  font-weight: 800 !important;
  font-size: 12px !important;
  min-width: 96px;
  text-align: right;
}
#modalNewTransfer #trUploadQueue .upload-status-ok   { color: #0a7d4a !important; }
#modalNewTransfer #trUploadQueue .upload-status-err  { color: #b91c1c !important; }
#modalNewTransfer #trUploadQueue .upload-status-pend { color: #4b5563 !important; }
#modalNewTransfer #trUploadQueue .upload-progress {
  background: rgba(124, 58, 237, 0.15) !important;
  height: 4px !important;
  margin-top: 6px !important;
}
#modalNewTransfer #trUploadQueue .upload-progress-fill {
  background: linear-gradient(90deg, #7c3aed, #388bfd) !important;
}
/* PATCH END v3 */
