/* ============================================================
   Combr - SaveDrive | Stylesheet Principal
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root {
  --sd-primary:     #1a56db;
  --sd-primary-dark:#1046c0;
  --sd-accent:      #0ea5e9;
  --sd-dark:        #0f172a;
  --sd-surface:     #1e293b;
  --sd-border:      #334155;
  --sd-muted:       #64748b;
  --sd-text:        #e2e8f0;
  --sd-text-light:  #94a3b8;
  --sd-success:     #22c55e;
  --sd-warning:     #f59e0b;
  --sd-danger:      #ef4444;
  --sd-radius:      .5rem;
  --sd-shadow:      0 4px 24px rgba(0,0,0,.35);
  --sd-sidebar:     240px;
  --sd-topbar:      58px;
}

*, *::before, *::after { box-sizing: border-box; }

body {
  font-family: 'Inter', sans-serif;
  background: var(--sd-dark);
  color: var(--sd-text);
  margin: 0;
  font-size: .9rem;
  -webkit-font-smoothing: antialiased;
}

body.spa-loading .sd-main {
  opacity: .58;
  pointer-events: none;
  transition: opacity .16s ease;
}

/* ---- Scrollbar ------------------------------------------- */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--sd-surface); }
::-webkit-scrollbar-thumb { background: var(--sd-border); border-radius: 3px; }

/* ---- Topbar ---------------------------------------------- */
.sd-topbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1030;
  height: var(--sd-topbar);
  background: var(--sd-surface);
  border-bottom: 1px solid var(--sd-border);
  display: flex; align-items: center; padding: 0 1.25rem;
  gap: 1rem;
}
.sd-topbar .brand {
  font-size: 1.1rem; font-weight: 700; color: var(--sd-primary);
  text-decoration: none; white-space: nowrap;
  display: flex; align-items: center; gap: .5rem;
}
.sd-topbar .brand span { color: var(--sd-accent); }
.sd-topbar .search-wrap {
  flex: 1; max-width: 460px;
  position: relative;
}
.sd-topbar .search-wrap input {
  width: 100%;
  background: var(--sd-dark); border: 1px solid var(--sd-border);
  border-radius: 2rem; color: var(--sd-text);
  padding: .45rem 1rem .45rem 2.5rem; font-size: .875rem;
  outline: none; transition: border-color .2s;
}
.sd-topbar .search-wrap input:focus { border-color: var(--sd-primary); }
.sd-topbar .search-wrap .bi-search {
  position: absolute; left: .85rem; top: 50%; transform: translateY(-50%);
  color: var(--sd-muted); font-size: .875rem;
}
.sd-topbar .ms-auto { margin-left: auto; }
.sd-avatar {
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--sd-primary); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .8rem; font-weight: 600; cursor: pointer;
  text-decoration: none; flex-shrink: 0;
}

/* ---- Sidebar --------------------------------------------- */
.sd-sidebar {
  position: fixed; top: var(--sd-topbar); left: 0; bottom: 0;
  width: var(--sd-sidebar); background: var(--sd-surface);
  border-right: 1px solid var(--sd-border);
  overflow-y: auto; z-index: 1020;
  padding: 1rem 0; transition: transform .25s;
  display: flex; flex-direction: column;
}
.sd-sidebar .nav-section {
  font-size: .7rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: .07em; color: var(--sd-muted);
  padding: 1rem 1.25rem .35rem; margin: 0;
}
.sd-sidebar .nav-link {
  display: flex; align-items: center; gap: .65rem;
  padding: .55rem 1.25rem; color: var(--sd-text-light);
  text-decoration: none; font-size: .875rem; font-weight: 500;
  border-radius: 0; transition: background .15s, color .15s;
}
.sd-sidebar .nav-link:hover { background: rgba(255,255,255,.05); color: var(--sd-text); }
.sd-sidebar .nav-link.active {
  background: rgba(26,86,219,.15); color: var(--sd-primary);
  border-right: 3px solid var(--sd-primary);
}
.sd-sidebar .nav-link .bi { font-size: 1rem; }

/* Quota bar */
.quota-bar {
  margin: 1rem 1.25rem 0;
  padding: .75rem; background: var(--sd-dark);
  border-radius: var(--sd-radius);
}
.quota-bar .progress { height: 5px; background: var(--sd-border); border-radius: 3px; }
.quota-bar .progress-bar { background: var(--sd-primary); border-radius: 3px; }
.quota-bar small { color: var(--sd-muted); font-size: .75rem; }
.sidebar-bottom-stack {
  margin: auto 1.25rem 0;
}
.sidebar-download-cta {
  padding-top: 1rem;
}
.sidebar-download-cta .btn {
  box-shadow: 0 10px 24px rgba(26,86,219,.22);
}
.sidebar-download-details {
  display: block;
  margin-top: .45rem;
  color: var(--sd-muted);
  font-size: .74rem;
  text-align: center;
  text-decoration: none;
}
.sidebar-download-details:hover { color: var(--sd-text-light); }
.sidebar-upload-monitor {
  display: block;
  width: 100%;
  margin: 0;
  padding: .75rem;
  border: 1px solid rgba(59,130,246,.34);
  border-radius: var(--sd-radius);
  background: linear-gradient(135deg, rgba(14,165,233,.13), rgba(26,86,219,.12));
  color: var(--sd-text);
  text-align: left;
  cursor: pointer;
}
.sidebar-upload-monitor__top,
.sidebar-upload-monitor__size {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  font-size: .78rem;
}
.sidebar-upload-monitor__top {
  align-items: center;
  font-weight: 600;
}
.sidebar-upload-monitor__top strong {
  color: var(--sd-accent);
}
.sidebar-upload-monitor__label,
.sidebar-upload-monitor__size {
  display: block;
  margin-top: .25rem;
  color: var(--sd-muted);
  font-size: .72rem;
}
.sidebar-upload-monitor__bar {
  display: block;
  height: 5px;
  margin-top: .55rem;
  overflow: hidden;
  border-radius: 999px;
  background: var(--sd-border);
}
.sidebar-upload-monitor__bar span {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--sd-primary), var(--sd-accent));
}
.web-upload-monitor-item {
  padding: .75rem;
  border: 1px solid var(--sd-border);
  border-radius: .7rem;
  background: var(--sd-surface);
}
.web-upload-monitor-item__name {
  min-width: 0;
  color: var(--sd-text);
  font-weight: 600;
}
.web-upload-monitor-item__meta {
  color: var(--sd-muted);
  font-size: .76rem;
}

/* ---- Main content ---------------------------------------- */
.sd-main {
  margin-left: var(--sd-sidebar);
  margin-top: var(--sd-topbar);
  padding: 1.5rem;
  min-height: calc(100vh - var(--sd-topbar));
}

/* ---- Cards ----------------------------------------------- */
.sd-card {
  background: var(--sd-surface);
  border: 1px solid var(--sd-border);
  border-radius: var(--sd-radius);
  padding: 1.25rem;
}
.sd-stat-card {
  background: var(--sd-surface);
  border: 1px solid var(--sd-border);
  border-radius: var(--sd-radius);
  padding: 1.25rem;
  display: flex; align-items: center; gap: 1rem;
}
.sd-stat-card .icon {
  width: 48px; height: 48px; border-radius: var(--sd-radius);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem; flex-shrink: 0;
}
.sd-stat-card .value { font-size: 1.5rem; font-weight: 700; }
.sd-stat-card .label { color: var(--sd-muted); font-size: .8rem; }

/* ---- File Manager ---------------------------------------- */
.file-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: .75rem;
}
.file-card {
  background: var(--sd-surface); border: 1px solid var(--sd-border);
  border-radius: var(--sd-radius); padding: .875rem .75rem;
  cursor: pointer; text-align: center; transition: border-color .15s, background .15s;
  position: relative; user-select: none; overflow: visible;
}
.file-card:hover { border-color: var(--sd-primary); background: rgba(26,86,219,.07); }
.file-card.selected { border-color: var(--sd-primary); background: rgba(26,86,219,.14); }
.file-card.drag-target { border-color: var(--sd-accent); background: rgba(14,165,233,.16); }
.file-card .file-icon { font-size: 2.5rem; margin-bottom: .5rem; display: block; }
.file-card .file-name {
  font-size: .78rem; font-weight: 500; color: var(--sd-text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  max-width: 100%;
}
.file-card .file-size { font-size: .7rem; color: var(--sd-muted); }
.file-card .file-menu-btn {
  position: absolute; top: .35rem; right: .35rem;
  opacity: 0; transition: opacity .15s;
  background: var(--sd-dark); border: none; border-radius: .25rem;
  color: var(--sd-muted); width: 24px; height: 24px;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
}
.file-card:hover .file-menu-btn { opacity: 1; }

/* Owner badge — aparece no canto inferior direito do card (grid) e inline na lista */
.file-owner-row {
  display: flex;
  justify-content: flex-end;
  margin-top: .2rem;
  padding-right: .1rem;
}
.file-owner-icon {
  width: 22px;
  height: 22px;
  border-radius: 999px;
  background: var(--sd-primary);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .72rem;
  cursor: help;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.08);
}
.file-owner-icon--inline {
  width: 18px;
  height: 18px;
  font-size: .62rem;
  vertical-align: middle;
  margin-right: .25rem;
}

/* List view */
.file-list { border: 1px solid var(--sd-border); border-radius: var(--sd-radius); overflow: visible; }
.file-list-item {
  display: flex; align-items: center; gap: .75rem;
  padding: .65rem 1rem; border-bottom: 1px solid var(--sd-border);
  cursor: pointer; transition: background .12s; position: relative; overflow: visible;
}
.file-list-item:last-child { border-bottom: none; }
.file-list-item:hover { background: rgba(255,255,255,.04); }
.file-list-item.selected { background: rgba(26,86,219,.12); }
.file-list-item.drag-target { background: rgba(14,165,233,.16); outline: 1px solid rgba(14,165,233,.55); }
.file-list-item .fi-name { flex: 1; font-size: .875rem; font-weight: 500; min-width: 0; }
.file-list-item .fi-name small { display: block; color: var(--sd-muted); font-size: .75rem; font-weight: 400; }
.file-list-item .fi-size, .file-list-item .fi-date { color: var(--sd-muted); font-size: .78rem; white-space: nowrap; }
.file-list-item .fi-size { min-width: 70px; text-align: right; }
.file-list-item .fi-date { min-width: 110px; text-align: right; }

/* ---- Upload Zone ----------------------------------------- */
.upload-zone {
  border: 2px dashed var(--sd-border); border-radius: var(--sd-radius);
  padding: 2.5rem 1rem; text-align: center; cursor: pointer;
  transition: border-color .2s, background .2s; color: var(--sd-muted);
}
.upload-zone:hover, .upload-zone.drag-over {
  border-color: var(--sd-primary); background: rgba(26,86,219,.06);
  color: var(--sd-text);
}
.upload-zone .bi { font-size: 2.5rem; margin-bottom: .5rem; display: block; }

.page-upload-drop {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, .78);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 1200;
  padding: 1.5rem;
}
.page-upload-drop.active { display: flex; }
.page-upload-drop__content {
  width: min(520px, 100%);
  border: 2px dashed rgba(14,165,233,.7);
  background: rgba(30, 41, 59, .96);
  border-radius: 1rem;
  padding: 2.25rem 1.5rem;
  text-align: center;
  box-shadow: var(--sd-shadow);
}
.page-upload-drop__content .bi {
  display: block;
  font-size: 2.8rem;
  color: var(--sd-accent);
  margin-bottom: .85rem;
}
.page-upload-drop__content strong {
  display: block;
  font-size: 1.05rem;
  margin-bottom: .35rem;
}
.page-upload-drop__content span {
  color: var(--sd-text-light);
  font-size: .86rem;
}

/* Upload progress */
.upload-item {
  background: var(--sd-dark); border-radius: var(--sd-radius);
  padding: .75rem 1rem; margin-top: .5rem;
}
.upload-item .progress { height: 4px; background: var(--sd-border); border-radius: 2px; margin-top: .35rem; }
.upload-item .progress-bar { background: var(--sd-primary); transition: width .3s; }

/* ---- Breadcrumb ------------------------------------------ */
.sd-breadcrumb {
  display: flex; align-items: center; gap: .35rem;
  flex-wrap: wrap; margin-bottom: 1rem;
}
.sd-breadcrumb a { color: var(--sd-muted); text-decoration: none; font-size: .85rem; }
.sd-breadcrumb a:hover { color: var(--sd-text); }
.sd-breadcrumb .sep { color: var(--sd-border); font-size: .7rem; }
.sd-breadcrumb .current { color: var(--sd-text); font-size: .85rem; font-weight: 500; }

/* ---- Toolbar --------------------------------------------- */
.sd-toolbar {
  display: flex; align-items: center; gap: .5rem;
  flex-wrap: wrap; margin-bottom: 1rem;
}
.sd-toolbar .btn-sm { font-size: .8rem; }
.sd-toolbar .ms-auto { margin-left: auto !important; }
.sd-toolbar .files-search-form {
  flex: 1 1 360px;
  justify-content: flex-end;
  max-width: 560px;
  min-width: min(100%, 320px);
}
.sd-toolbar .files-search-form input[name="q"] {
  min-width: 220px;
}
.sd-toolbar input[name="q"]::placeholder {
  color: #cbd5e1;
  opacity: 1;
}

.sd-upload-limit-note {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  max-width: 100%;
  padding: .55rem .75rem;
  border: 1px solid var(--sd-border);
  border-radius: .65rem;
  background: rgba(14, 165, 233, .08);
  color: var(--sd-muted);
  font-size: .86rem;
}
.sd-upload-limit-note strong {
  color: var(--sd-text);
}

.files-folder-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .75rem;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
}
.files-per-page-form {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: 0;
  margin-left: auto;
}
.files-per-page-form label[for="per-page-select"] {
  white-space: nowrap;
}
.files-per-page-form #per-page-select {
  width: 84px;
  min-width: 84px;
  background: transparent;
  border-color: var(--sd-border);
  box-shadow: none;
}
.files-per-page-form #per-page-select:focus {
  box-shadow: none;
}
.files-view-toggle {
  display: flex;
  align-items: center;
  gap: .25rem;
  flex-shrink: 0;
}

.sd-view-toggle-floating {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 1040;
  padding: .4rem;
  border-radius: 999px;
  background: rgba(30, 41, 59, .92);
  border: 1px solid var(--sd-border);
  box-shadow: var(--sd-shadow);
}

.sd-view-toggle-floating .btn {
  min-width: 40px;
}

/* ---- Forms ----------------------------------------------- */
.form-control, .form-select {
  background: var(--sd-dark) !important;
  border-color: var(--sd-border) !important;
  color: var(--sd-text) !important;
}
.form-control:focus, .form-select:focus {
  border-color: var(--sd-primary) !important;
  box-shadow: 0 0 0 3px rgba(26,86,219,.2) !important;
}
.form-label { font-size: .85rem; font-weight: 500; color: var(--sd-text-light); }
.form-text  { color: var(--sd-muted) !important; }

/* ---- Buttons --------------------------------------------- */
.btn-primary   { background: var(--sd-primary); border-color: var(--sd-primary); }
.btn-primary:hover { background: var(--sd-primary-dark); border-color: var(--sd-primary-dark); }
.btn-outline-secondary {
  border-color: var(--sd-border); color: var(--sd-text-light);
}
.btn-outline-secondary:hover { background: var(--sd-border); color: var(--sd-text); }

/* ---- Dark interactive menus ------------------------------ */
.dropdown-menu {
  --bs-dropdown-bg: var(--sd-surface);
  --bs-dropdown-border-color: var(--sd-border);
  --bs-dropdown-link-color: var(--sd-text);
  --bs-dropdown-link-hover-color: var(--sd-text);
  --bs-dropdown-link-hover-bg: rgba(59, 130, 246, .18);
  --bs-dropdown-link-active-color: #fff;
  --bs-dropdown-link-active-bg: rgba(26, 86, 219, .42);
  --bs-dropdown-link-disabled-color: var(--sd-muted);
  --bs-dropdown-header-color: var(--sd-muted);
  --bs-dropdown-divider-bg: var(--sd-border);
  background: var(--sd-surface);
  background-color: var(--sd-surface);
  border-color: var(--sd-border);
}
.dropdown-menu .dropdown-item,
.dropdown-menu .dropdown-item.text-light,
.dropdown-menu .dropdown-item.text-danger,
.dropdown-menu .dropdown-item.text-warning {
  background-color: transparent !important;
  color: var(--sd-text) !important;
}
.dropdown-menu .dropdown-item.text-danger {
  color: #f87171 !important;
}
.dropdown-menu .dropdown-item.text-warning {
  color: #fbbf24 !important;
}
.dropdown-menu .dropdown-item:hover,
.dropdown-menu .dropdown-item:focus,
.dropdown-menu .dropdown-item.text-light:hover,
.dropdown-menu .dropdown-item.text-light:focus,
.dropdown-menu .dropdown-item.text-danger:hover,
.dropdown-menu .dropdown-item.text-danger:focus,
.dropdown-menu .dropdown-item.text-warning:hover,
.dropdown-menu .dropdown-item.text-warning:focus,
.sd-topbar .dropdown-menu .dropdown-item:hover,
.sd-topbar .dropdown-menu .dropdown-item:focus,
.sd-profile-menu .dropdown-item:hover,
.sd-profile-menu .dropdown-item:focus {
  background: rgba(59, 130, 246, .18) !important;
  background-color: rgba(59, 130, 246, .18) !important;
  color: #fff !important;
}
.dropdown-menu .dropdown-item:active,
.dropdown-menu .dropdown-item.active,
.sd-topbar .dropdown-menu .dropdown-item:active,
.sd-topbar .dropdown-menu .dropdown-item.active,
.sd-profile-menu .dropdown-item:active,
.sd-profile-menu .dropdown-item.active {
  background: rgba(26, 86, 219, .42) !important;
  background-color: rgba(26, 86, 219, .42) !important;
  color: #fff !important;
}
.dropdown-divider {
  border-color: var(--sd-border);
}

.list-group-item,
.list-group-item-action {
  background: var(--sd-surface);
  background-color: var(--sd-surface);
  border-color: var(--sd-border);
  color: var(--sd-text);
}
.list-group-item-action:hover,
.list-group-item-action:focus,
.list-group-item:hover,
.list-group-item:focus {
  background: rgba(59, 130, 246, .16) !important;
  background-color: rgba(59, 130, 246, .16) !important;
  color: #fff !important;
}
.list-group-item.active,
.list-group-item-action.active {
  background: rgba(26, 86, 219, .42) !important;
  background-color: rgba(26, 86, 219, .42) !important;
  border-color: rgba(96, 165, 250, .5) !important;
  color: #fff !important;
}

/* ---- Tables ---------------------------------------------- */
.table-dark { --bs-table-bg: var(--sd-surface); --bs-table-border-color: var(--sd-border); }
.table-dark thead th { color: var(--sd-muted); font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; }

/* ---- Modals ---------------------------------------------- */
.modal-content { background: var(--sd-surface); border: 1px solid var(--sd-border); }
.modal-header  { border-bottom-color: var(--sd-border); }
.modal-footer  { border-top-color: var(--sd-border); }
.btn-close     { filter: invert(1); }

/* ---- Login page ------------------------------------------ */
.login-page {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: var(--sd-dark);
  background-image: radial-gradient(ellipse at 30% 60%, rgba(26,86,219,.15) 0%, transparent 60%),
                    radial-gradient(ellipse at 80% 20%, rgba(14,165,233,.1) 0%, transparent 50%);
}
.login-card {
  width: 100%; max-width: 420px;
  background: var(--sd-surface); border: 1px solid var(--sd-border);
  border-radius: 1rem; padding: 2.5rem;
  box-shadow: var(--sd-shadow);
}
.login-card .logo { text-align: center; margin-bottom: 2rem; }
.login-card .logo h1 { font-size: 1.6rem; font-weight: 700; color: #fff; margin: 0; }
.login-card .logo span { color: var(--sd-accent); }
.login-card .logo p { color: var(--sd-muted); font-size: .85rem; margin: .25rem 0 0; }

/* ---- Admin badges ---------------------------------------- */
.badge-role-superadmin { background: linear-gradient(135deg,#7c3aed,#4f46e5); color: #fff; }
.badge-role-admin      { background: var(--sd-primary); color: #fff; }
.badge-role-user       { background: var(--sd-border); color: var(--sd-text); }

/* ---- Responsive ------------------------------------------ */
@media (max-width: 768px) {
  :root { --sd-sidebar: 0px; }
  .sd-sidebar { transform: translateX(-100%); width: 240px; }
  .sd-sidebar.open { transform: translateX(0); }
  .sd-main { margin-left: 0; padding: 1rem; }
  .file-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
  .sd-toolbar .files-search-form {
    flex-basis: 100%;
    justify-content: flex-start;
    margin-left: 0 !important;
    max-width: none;
  }
  .sd-toolbar .files-search-form input[name="q"] {
    min-width: 0;
  }
  .files-folder-summary {
    align-items: flex-start;
  }
  .files-per-page-form {
    width: 100%;
    margin-left: 0;
  }
}

/* ---- Dropdown context menu ------------------------------- */
.ctx-menu {
  position: fixed; z-index: 9999;
  background: var(--sd-surface); border: 1px solid var(--sd-border);
  border-radius: var(--sd-radius); box-shadow: var(--sd-shadow);
  min-width: 180px; padding: .35rem 0;
}
.ctx-menu a {
  display: flex; align-items: center; gap: .6rem;
  padding: .5rem 1rem; color: var(--sd-text);
  text-decoration: none; font-size: .85rem;
  transition: background .12s;
}
.ctx-menu a:hover,
.ctx-menu a:focus {
  background: rgba(59, 130, 246, .18);
  color: #fff;
}
.ctx-menu .ctx-sep { border-top: 1px solid var(--sd-border); margin: .35rem 0; }

/* ---- Searchable log filters ------------------------------ */
.log-autocomplete-wrap { position: relative; }
.log-autocomplete-list {
  position: absolute;
  top: calc(100% + .25rem);
  left: 0;
  right: 0;
  z-index: 1055;
  max-height: 13rem;
  overflow-y: auto;
  background: var(--sd-surface);
  border: 1px solid var(--sd-border);
  border-radius: .65rem;
  box-shadow: 0 14px 30px rgba(0,0,0,.28);
  padding: .25rem;
}
.log-autocomplete-list[hidden] { display: none; }
.log-autocomplete-item {
  display: block;
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--sd-text);
  text-align: left;
  padding: .58rem .7rem;
  border-radius: .5rem;
  font-size: .9rem;
}
.log-autocomplete-item:hover,
.log-autocomplete-item:focus {
  background: rgba(59, 130, 246, .18);
  color: #fff;
  outline: none;
}
.log-autocomplete-empty {
  color: var(--sd-muted);
  padding: .58rem .7rem;
  font-size: .88rem;
}

/* ---- Animations ------------------------------------------ */
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.fade-in { animation: fadeIn .25s ease both; }

/* ---- Shared link page ------------------------------------ */
.share-page {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: var(--sd-dark); padding: 1rem;
}
.share-card {
  width: 100%; max-width: 500px;
  background: var(--sd-surface); border: 1px solid var(--sd-border);
  border-radius: 1rem; padding: 2rem; text-align: center;
}


/* ---- Fix modais Bootstrap (stacking context) ------------ */
.modal          { z-index: 1060 !important; }
.modal-backdrop { z-index: 1050 !important; }



