    /* ══════════════════════════════════════════════
     Smiles Dashboard — Pastel Design
  ══════════════════════════════════════════════ */
    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0
    }

    :root {
      --bg: #F7F6FF;
      --card: #ffffff;
      --border: #E8E6F8;
      --border-strong: #D8D8FF;
      --text: #2d2b3d;
      --sub: #9896b0;
      --blue: #A4A4F4;
      --blue-dim: #F0EFFF;
      --blue-mid: #D8D8FF;
      --green: #79E8B3;
      --green-dim: #edfdf5;
      --orange: #FFCC99;
      --orange-dim: #fff8ee;
      --red: #FFA4D4;
      --red-dim: #fff0f7;
      /* full palette */
      --pink-light: #FFD2EA;
      --pink-mid: #FFC2DF;
      --pink: #FFA4D4;
      --peach: #FFCC99;
      --yellow: #FFE98A;
      --mint-dark: #79E8B3;
      --mint: hsl(136, 100%, 85%);
      --sky-light: #BBEFFF;
      --sky: #99E2FF;
      --sky-blue: #80B1FF;
      --lavender: #C5C5FF;
      --lavender-dark: #A4A4F4;
      --sidebar: 244px;
      --sidebar-bg: #ffffff;
      --s1: 0 2px 12px rgba(164, 164, 244, .1), 0 1px 4px rgba(164, 164, 244, .07);
      --s2: 0 4px 24px rgba(164, 164, 244, .15), 0 2px 8px rgba(164, 164, 244, .08);
      --s3: 0 20px 60px rgba(164, 164, 244, .a2), 0 6px 20px rgba(164, 164, 244, .1);
      --r: 16px;
      --r-sm: 10px;
      --r-xs: 6px;
    }

    @font-face {
      font-family: 'Geomanist';
      src: url('fonts/Geomanist-Regular.otf') format('opentype');
      font-weight: 400;
      font-style: normal;
      font-display: swap;
    }
    @font-face {
      font-family: 'Geomanist';
      src: url('fonts/Geomanist-Book.otf') format('opentype');
      font-weight: 450;
      font-style: normal;
      font-display: swap;
    }
    @font-face {
      font-family: 'Geomanist';
      src: url('fonts/Geomanist-Medium.otf') format('opentype');
      font-weight: 500;
      font-style: normal;
      font-display: swap;
    }
    @font-face {
      font-family: 'Geomanist';
      src: url('fonts/Geomanist-Bold.otf') format('opentype');
      font-weight: 700;
      font-style: normal;
      font-display: swap;
    }
    @font-face {
      font-family: 'Geomanist';
      src: url('fonts/Geomanist-Black.otf') format('opentype');
      font-weight: 800;
      font-style: normal;
      font-display: swap;
    }

    body {
      font-family: 'Geomanist', Georgia, sans-serif;
      background: linear-gradient(135deg, #C5C5FF 0%, #F7F6FF 35%, #FFD2EA 70%, #FFCC99 100%);
      background-attachment: fixed;
      color: var(--text);
      min-height: 100vh;
      display: flex;
      -webkit-font-smoothing: antialiased
    }

    /* ── Gate / Client Selector backgrounds ── */
    .dark-screen {
      position: fixed;
      inset: 0;
      background: #1C1917;
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 9999
    }

    .dark-screen::before {
      content: '';
      position: absolute;
      inset: 0;
      background: radial-gradient(ellipse 80% 60% at 50% 0%, rgba(164, 164, 244, .14) 0%, transparent 70%);
      pointer-events: none
    }

    /* ── Password Gate ── */
    #gate {
      position: fixed;
      inset: 0;
      background: linear-gradient(135deg, #C5C5FF 0%, #F7F6FF 35%, #FFD2EA 70%, #FFCC99 100%);
      display: var(--gate-initial, flex);
      align-items: center;
      justify-content: center;
      z-index: 9999;
      overflow: hidden
    }

    #gate::before {
      content: '';
      position: absolute;
      inset: 0;
      background: radial-gradient(ellipse 70% 50% at 50% -10%, rgba(164, 164, 244, .22), transparent 65%);
      pointer-events: none
    }

    #gate.hidden {
      display: none
    }

    .gate-box {
      position: relative;
      z-index: 1;
      background: rgba(255, 255, 255, 0.82);
      border: 1px solid rgba(164, 164, 244, 0.35);
      border-radius: 22px;
      padding: 44px 40px;
      width: 360px;
      text-align: center;
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
      box-shadow: 0 16px 56px rgba(112, 112, 224, 0.18), 0 2px 8px rgba(164, 164, 244, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.9)
    }

    .gate-logo {
      margin-bottom: 20px;
      display: flex;
      justify-content: center
    }

    .gate-box h2 {
      font-size: 1.25rem;
      font-weight: 800;
      color: #2d2b3d;
      letter-spacing: -.03em;
      margin-bottom: 6px
    }

    .gate-box p {
      font-size: .82rem;
      color: rgba(45, 43, 61, 0.45);
      margin-bottom: 28px;
      line-height: 1.55
    }

    .gate-box input {
      width: 100%;
      padding: 12px 16px;
      border: 1.5px solid rgba(164, 164, 244, 0.35);
      border-radius: 10px;
      font-size: .95rem;
      margin-bottom: 14px;
      outline: none;
      text-align: center;
      letter-spacing: .18em;
      background: rgba(255, 255, 255, 0.85);
      color: #2d2b3d;
      transition: all .18s
    }

    .gate-box input::placeholder {
      letter-spacing: normal;
      color: rgba(45, 43, 61, 0.3);
      font-size: .85rem
    }

    .gate-box input:focus {
      border-color: rgba(164, 164, 244, 0.7);
      box-shadow: 0 0 0 4px rgba(164, 164, 244, 0.14);
      background: #fff
    }

    .gate-error {
      color: #c0305a;
      font-size: .77rem;
      margin-bottom: 10px;
      min-height: 18px;
      font-weight: 500
    }

    .gate-box .btn-primary {
      width: 100%;
      justify-content: center;
      padding: 12px;
      font-size: .9rem;
      font-weight: 700;
      border-radius: 10px;
      background: linear-gradient(90deg, #A4A4F4, #9090E8);
      color: #fff;
      box-shadow: 0 4px 16px rgba(164, 164, 244, 0.35)
    }

    .gate-box .btn-primary:hover {
      background: linear-gradient(90deg, #9090E8, #7878DC);
      transform: translateY(-1px);
      box-shadow: 0 8px 24px rgba(164, 164, 244, 0.45)
    }

    .gate-hint {
      margin-top: 18px;
      font-size: .72rem;
      color: rgba(45, 43, 61, 0.38)
    }

    /* ── Sidebar ── */
    #sidebar {
      width: var(--sidebar);
      background: rgba(255, 255, 255, 0.55);
      backdrop-filter: blur(20px) saturate(160%);
      -webkit-backdrop-filter: blur(20px) saturate(160%);
      color: var(--text);
      display: flex;
      flex-direction: column;
      flex-shrink: 0;
      height: calc(100vh - 16px);
      position: sticky;
      top: 8px;
      margin: 8px 0 8px 8px;
      border-radius: 20px;
      border: 1px solid rgba(255, 255, 255, 0.65);
      overflow: hidden
    }

    .sidebar-logo {
      padding: 20px 18px 16px;
      border-bottom: 1px solid rgba(255, 255, 255, 0.55);
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center
    }

    .sidebar-logo-img {
      display: block;
      height: 28px;
      width: auto
    }

    /* ── Glassmorphism logo wrapper ── */
    .logo-glass-wrap {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border-radius: 14px;
      padding: 10px 18px;
      background: rgba(197, 197, 255, 0.12);
      border: 1px solid rgba(255, 255, 255, 0.45);
      box-shadow:
        0 2px 12px rgba(164, 164, 244, 0.18),
        inset 0 1px 0 rgba(255, 255, 255, 0.55);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      overflow: hidden;
      transform: translateZ(0);
    }

    .logo-glass-wrap::after {
      content: '';
      position: absolute;
      top: 0; left: 8%; width: 84%; height: 40%;
      border-radius: 0 0 50% 50%;
      background: linear-gradient(180deg, rgba(255,255,255,0.38) 0%, rgba(255,255,255,0) 100%);
      pointer-events: none;
    }

    .gate-logo .logo-glass-wrap {
      padding: 12px 22px;
      border-radius: 16px;
      background: rgba(255, 255, 255, 0.7);
      border-color: rgba(164, 164, 244, 0.3);
      box-shadow:
        0 0 28px rgba(164, 164, 244, 0.18),
        0 4px 16px rgba(255, 164, 212, 0.10),
        inset 0 1px 0 rgba(255, 255, 255, 0.9);
    }

    .sidebar-logo .logo-glass-wrap {
      padding: 8px 16px;
      border-radius: 14px;
      background: rgba(197, 197, 255, 0.09);
      border-color: rgba(164, 164, 244, 0.28);
      box-shadow:
        0 1px 8px rgba(164, 164, 244, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 0.70);
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
    }

    .gate-logo svg {
      filter: drop-shadow(0 0 8px rgba(164, 164, 244, 0.55))
              drop-shadow(0 0 18px rgba(255, 164, 212, 0.22));
    }

    .sidebar-logo-img {
      filter: drop-shadow(0 1px 4px rgba(164, 164, 244, 0.30));
    }

    .sidebar-logo p {
      font-size: .72rem;
      font-weight: 800;
      color: var(--blue);
      margin-top: 10px;
      white-space: nowrap;
      text-transform: uppercase;
      letter-spacing: .08em;
      text-align: center;
      background: rgba(164, 164, 244, 0.14);
      border: 1px solid rgba(164, 164, 244, 0.35);
      border-radius: 999px;
      padding: 4px 12px;
      display: inline-block;
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px)
    }

    .sidebar-client-card {
      margin: 6px 14px 2px;
      padding: 10px 14px;
      background: var(--card);
      border: 1px solid var(--border);
      border-radius: 12px;
      cursor: pointer;
      transition: all .18s;
      box-shadow: 0 2px 8px rgba(164,164,244,.07);
    }
    .sidebar-client-card:hover {
      background: var(--blue-dim);
      border-color: var(--border-strong);
    }
    .sidebar-client-card.hidden { display: none }
    .sidebar-client-label {
      font-size: .78rem;
      font-weight: 700;
      color: var(--text);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      display: block;
    }
    .sidebar-client-switch {
      font-size: .66rem;
      color: var(--blue);
      margin-top: 2px;
      display: block;
      opacity: .8;
    }

    .sidebar-nav {
      flex: 1;
      padding: 10px 12px;
      overflow-y: auto
    }

    /* Button reset for nav items (semantic <button> for accessibility) */
    button.nav-item {
      border: none;
      background: none;
      font-family: inherit;
      text-align: left;
      width: 100%;
    }

    .nav-item {
      display: flex;
      align-items: center;
      gap: 9px;
      padding: 8px 10px;
      cursor: pointer;
      border-radius: var(--r-sm);
      transition: background .15s ease-out, color .15s ease-out, transform .15s ease-out;
      font-size: .82rem;
      color: var(--sub);
      margin-bottom: 1px;
      font-weight: 600;
      letter-spacing: -.01em;
      position: relative;
      -webkit-user-select: none;
      user-select: none;
    }

    .nav-item:hover {
      background: #F7F6FF;
      color: var(--text);
      transform: translateX(2px);
    }

    .nav-item:active {
      transform: scale(.98);
      transition-duration: .05s;
    }

    .nav-item.active {
      background: var(--blue-dim);
      color: var(--blue);
      font-weight: 700
    }

    .nav-item.active::before {
      content: '';
      position: absolute;
      left: -12px;
      top: 6px;
      bottom: 6px;
      width: 3px;
      background: var(--blue);
      border-radius: 0 3px 3px 0;
      animation: slideInLeft .2s ease-out both;
    }

    @keyframes slideInLeft {
      from { transform: scaleY(0); opacity: 0 }
      to   { transform: scaleY(1); opacity: 1 }
    }

    .nav-icon {
      width: 26px;
      height: 26px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      border-radius: 7px;
      opacity: .6;
      transition: opacity .13s, background .13s
    }

    .nav-item.active .nav-icon {
      opacity: 1;
      background: linear-gradient(135deg, rgba(253,233,138,.25), rgba(164,164,244,.18));
      box-shadow: 0 1px 4px rgba(164,164,244,.18)
    }

    .nav-item.active .nav-icon svg {
      color: var(--blue)
    }

    .nav-item:hover .nav-icon {
      opacity: .85
    }

    .nav-section {
      font-size: .62rem;
      font-weight: 800;
      color: #A8A29E;
      text-transform: uppercase;
      letter-spacing: .1em;
      padding: 16px 10px 5px
    }

    .sidebar-footer {
      padding: 14px 16px;
      border-top: 1px solid rgba(255, 255, 255, 0.55);
      font-size: .7rem;
      color: var(--sub)
    }

    /* ── Main area ── */
    #main {
      flex: 1;
      display: flex;
      flex-direction: column;
      min-width: 0;
      background: transparent
    }

    .topbar {
      background: rgba(255, 255, 255, 0.55);
      backdrop-filter: blur(20px) saturate(160%);
      -webkit-backdrop-filter: blur(20px) saturate(160%);
      border: 1px solid rgba(255, 255, 255, 0.65);
      border-radius: 16px;
      margin: 12px 12px 0;
      padding: 0 28px;
      height: 56px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-shrink: 0;
      box-shadow: var(--s1)
    }

    .topbar-title {
      font-size: .95rem;
      font-weight: 700;
      letter-spacing: -.02em;
      color: var(--sub)
    }

    .topbar-title strong {
      color: var(--text);
      font-weight: 800
    }

    .topbar-actions {
      display: flex;
      gap: 8px;
      align-items: center
    }

    .content {
      flex: 1;
      padding: 24px 24px 24px 16px;
      overflow-y: auto
    }

    /* ── Buttons ── */
    .btn {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 8px 16px;
      border-radius: var(--r-sm);
      border: none;
      cursor: pointer;
      font-size: .82rem;
      font-weight: 700;
      transition: all .15s;
      letter-spacing: -.01em;
      white-space: nowrap
    }

    .btn-primary {
      background: #FDE98A;
      color: #2d2b3d;
      box-shadow: 0 2px 8px rgba(253, 233, 138, .4);
      border-radius: 6px
    }

    .btn-primary:hover {
      background: #fce06a;
      box-shadow: 0 4px 16px rgba(253, 233, 138, .55);
      transform: translateY(-1px)
    }

    .btn-primary:active {
      transform: translateY(0)
    }

    .btn-primary:disabled {
      background: #fef3c7;
      color: #9896b0;
      box-shadow: none;
      cursor: not-allowed;
      transform: none
    }

    .btn-secondary {
      background: #B3FFC7;
      color: #2d2b3d;
      border: none;
      box-shadow: 0 2px 8px rgba(179, 255, 199, .3);
      border-radius: 6px
    }

    .btn-secondary:hover {
      background: #99f0b3;
      transform: translateY(-1px);
      box-shadow: 0 4px 16px rgba(179, 255, 199, .45)
    }

    .btn-secondary:active {
      transform: translateY(0)
    }

    .btn-danger {
      background: var(--red-dim);
      color: var(--red);
      border: 1px solid #FECACA
    }

    /* ── Cards ── */
    .card {
      background: rgba(255, 255, 255, 0.55);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255, 255, 255, 0.65);
      border-radius: var(--r);
      padding: 24px;
      box-shadow: 0 4px 24px rgba(164, 164, 244, 0.13), inset 0 1px 0 rgba(255, 255, 255, 0.7)
    }

    .card-title {
      font-size: .67rem;
      font-weight: 800;
      color: var(--sub);
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-bottom: 14px
    }

    /* ── Sections ── */
    .section {
      display: none
    }

    .section.active {
      display: block
    }

    /* ── Setup form ── */
    .setup-grid {
      display: grid;
      gap: 16px;
      max-width: 700px
    }

    .field {
      display: flex;
      flex-direction: column;
      gap: 5px
    }

    .field label {
      font-size: .8rem;
      font-weight: 700;
      color: var(--text);
      letter-spacing: -.01em
    }

    .field input,
    .field select,
    .field textarea {
      padding: 9px 12px;
      border: 1px solid var(--border);
      border-radius: var(--r-sm);
      font-size: .875rem;
      background: #fff;
      outline: none;
      transition: all .15s;
      color: var(--text);
      box-shadow: var(--s1)
    }

    .field input:focus,
    .field select:focus,
    .field textarea:focus {
      border-color: var(--blue);
      box-shadow: 0 0 0 3px rgba(164, 164, 244, .13)
    }

    .field .hint {
      font-size: .74rem;
      color: var(--sub);
      line-height: 1.5
    }

    .field input[type="password"] {
      font-family: monospace;
      letter-spacing: .06em
    }

    .show-hide {
      position: relative
    }

    .show-hide input {
      padding-right: 46px;
      width: 100%
    }

    .show-hide button {
      position: absolute;
      right: 10px;
      top: 50%;
      transform: translateY(-50%);
      background: none;
      border: none;
      cursor: pointer;
      color: var(--sub);
      font-size: .73rem;
      font-weight: 700
    }

    /* Brand cards */
    .brand-list {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin-bottom: 14px
    }

    .brand-card {
      background: var(--bg);
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 14px 16px
    }

    .brand-card-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 10px
    }

    .brand-card-header strong {
      font-size: .88rem;
      font-weight: 800
    }

    .brand-fields {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px
    }

    .brand-fields .field label {
      font-size: .76rem
    }

    .brand-fields .field input {
      font-size: .83rem;
      padding: 7px 10px
    }

    /* ── Stats row (bento grid) ── */
    .stats-row {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      grid-auto-rows: minmax(150px, auto);
      gap: 20px;
      margin-bottom: 24px
    }

    .card-2x1 { grid-column: span 2 }

    .stat-card {
      background: rgba(255, 255, 255, 0.55);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255, 255, 255, 0.65);
      border-radius: var(--r);
      padding: 24px;
      box-shadow: 0 4px 24px rgba(164, 164, 244, 0.13), inset 0 1px 0 rgba(255, 255, 255, 0.7);
      transition: box-shadow .15s, transform .15s;
      position: relative;
      overflow: hidden
    }

    .stat-card::after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 3px;
      background: linear-gradient(90deg, #FDE98A, #A4A4F4);
      opacity: 0;
      transition: opacity .2s
    }

    .stat-card:hover {
      box-shadow: 0 12px 40px rgba(164, 164, 244, 0.15);
      transform: translateY(-4px) scale(1.02)
    }

    .stat-card:hover::after {
      opacity: 1
    }

    .stat-label {
      font-size: .67rem;
      color: var(--sub);
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .08em;
      margin-bottom: 8px
    }

    .stat-change {
      font-size: .73rem;
      font-weight: 700;
      display: inline-flex;
      align-items: center;
      gap: 3px;
      padding: 3px 10px;
      border-radius: 20px;
      width: fit-content
    }

    .stat-change.up {
      background: rgba(121, 232, 179, 0.2);
      color: #2d8a5e
    }

    .stat-change.down {
      background: rgba(255, 164, 212, 0.2);
      color: #c44d7b
    }

    .stat-change.neutral {
      color: var(--sub)
    }

    .up {
      color: var(--green)
    }

    .down {
      color: var(--red)
    }

    .neutral {
      color: var(--sub)
    }

    /* ── Frontend-design skill improvements ── */

    /* 1. Noise grain overlay for tactile depth */
    body::before {
      content: '';
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 0;
      opacity: .038;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");
      background-size: 300px;
    }

    /* 2. Urbanist for metric numbers — color-coded per metric */
    .stat-value {
      font-family: 'Geomanist', Georgia, sans-serif;
      font-size: 2.75rem;
      font-weight: 800;
      font-variant-numeric: tabular-nums;
      letter-spacing: -.03em;
      line-height: 1.1;
      margin-bottom: 4px
    }

    /* Color-coded stat values — darkened for WCAG AA large-text 3:1 contrast on white */
    .stat-card[data-color="blue"] .stat-value { color: #7070E0 }
    .stat-card[data-color="green"] .stat-value { color: #3BA872 }
    .stat-card[data-color="sky"] .stat-value { color: #4A9DBF }
    .stat-card[data-color="orange"] .stat-value { color: #B87A2A }
    .stat-card[data-color="lavender"] .stat-value { color: #8585E0 }
    .stat-card[data-color="pink"] .stat-value { color: #C06090 }

    /* Stat card accent stripe */
    .stat-stripe {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 4px;
      border-radius: var(--r) var(--r) 0 0
    }

    /* 3. Stat card accent stripe always subtly visible */
    .stat-card::after {
      opacity: .28
    }
    .stat-card:hover::after {
      opacity: 1
    }

    /* 4. Section entrance animation */
    @keyframes sectionIn {
      from { opacity: 0; transform: translateY(7px); }
      to   { opacity: 1; transform: translateY(0);   }
    }
    .section.active {
      animation: sectionIn .22s cubic-bezier(.22,1,.36,1) both
    }

    /* 5. Table row hover */
    table tbody tr {
      transition: background .1s
    }
    table tbody tr:hover td {
      background: rgba(197,197,255,.1)
    }

    /* 6. Client card name */
    .client-card-name {
      font-family: 'Geomanist', Georgia, sans-serif;
      font-weight: 400;
      font-size: .98rem;
      letter-spacing: -.01em
    }

    /* 7. Card entrance — staggered fade+slide */
    @keyframes cardIn {
      from { opacity: 0; transform: translateY(20px) scale(0.97); }
      to   { opacity: 1; transform: translateY(0) scale(1); }
    }

    @keyframes aiBounce {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-8px); }
    }
    /* Only animate stat cards in the dashboard stats row */
    .stats-row .stat-card {
      animation: cardIn .5s ease both
    }
    .stats-row .stat-card:nth-child(1) { animation-delay: .06s }
    .stats-row .stat-card:nth-child(2) { animation-delay: .12s }
    .stats-row .stat-card:nth-child(3) { animation-delay: .18s }
    .stats-row .stat-card:nth-child(4) { animation-delay: .24s }
    .stats-row .stat-card:nth-child(5) { animation-delay: .30s }
    .stats-row .stat-card:nth-child(6) { animation-delay: .36s }
    .stats-row .stat-card:nth-child(7) { animation-delay: .42s }
    .stats-row .stat-card:nth-child(8) { animation-delay: .48s }
    /* Chart cards get a simpler fade — no scale to avoid Canvas sizing issues */
    #brand-dashboard-panels > .card {
      animation: cardIn .4s ease both;
      animation-delay: .4s
    }

    /* ── Screen reader only ── */
    .sr-only {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
      border: 0
    }

    /* ── Focus visible ── */
    :focus-visible {
      outline: 2px solid #7070E0;
      outline-offset: 2px
    }

    /* ── Reduced motion ── */
    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-delay: 0s !important;
        transition-duration: 0.01ms !important;
      }
      .stats-row .stat-card, #brand-dashboard-panels > .card { opacity: 1 }
      .brand-tab, .brand-tab.active { transform: none !important }
      .stat-card:hover { transform: none !important }
      .nav-item:hover { transform: none !important }
      .skeleton { animation: none !important; background: rgba(197,197,255,.18) }
    }

    /* ── Table ── */
    .table-wrap {
      overflow-x: auto;
      border-radius: var(--r);
      border: 1px solid var(--border);
      box-shadow: var(--s1)
    }

    table {
      width: 100%;
      border-collapse: collapse;
      font-size: .82rem
    }

    thead th {
      background: #FAF8F5;
      padding: 11px 14px;
      text-align: left;
      font-weight: 800;
      font-size: .66rem;
      color: var(--sub);
      text-transform: uppercase;
      letter-spacing: .07em;
      white-space: nowrap;
      border-bottom: 1px solid var(--border)
    }

    thead th.sortable {
      cursor: pointer;
      user-select: none
    }

    thead th.sortable:hover {
      color: var(--text)
    }

    thead th.sort-asc::after {
      content: ' ↑';
      color: var(--blue)
    }

    thead th.sort-desc::after {
      content: ' ↓';
      color: var(--blue)
    }

    tbody td {
      padding: 11px 14px;
      border-top: 1px solid #F0EFFF;
      white-space: nowrap;
      color: var(--text)
    }

    .pill {
      display: inline-flex;
      align-items: center;
      padding: 3px 9px;
      border-radius: 20px;
      font-size: .71rem;
      font-weight: 700;
      letter-spacing: .02em
    }

    .pill-green {
      background: #D1FAE5;
      color: #047857
    }

    .pill-red {
      background: #FEE2E2;
      color: #B91C1C
    }

    .pill-orange {
      background: #FEF3C7;
      color: #92400E
    }

    .pill-blue {
      background: var(--blue-dim);
      color: #6b5fcc
    }

    .pill-grey {
      background: #F7F6FF;
      color: #57534E
    }

    /* ── Alert ── */
    .alert {
      padding: 12px 16px;
      border-radius: var(--r-sm);
      font-size: .83rem;
      margin-bottom: 12px;
      display: flex;
      gap: 10px;
      align-items: flex-start;
      border: 1px solid transparent;
      line-height: 1.5
    }

    .alert-warn {
      background: var(--orange-dim);
      border-color: #FDE68A;
      color: #78350F
    }

    .alert-danger {
      background: var(--red-dim);
      border-color: #FECACA;
      color: #991B1B
    }

    .alert-info {
      background: var(--blue-dim);
      border-color: var(--blue-mid);
      color: #6b5fcc
    }

    .alert-success {
      background: var(--green-dim);
      border-color: #A7F3D0;
      color: #065F46
    }

    /* ── Chart wrap ── */
    .chart-wrap {
      position: relative;
      height: 220px;
      margin-top: 16px
    }

    /* ── Empty state ── */
    .empty {
      text-align: center;
      padding: 72px 20px;
      color: var(--sub)
    }

    .empty-icon {
      font-size: 2.8rem;
      margin-bottom: 16px;
      opacity: .6
    }

    .empty h3 {
      font-size: 1.05rem;
      margin-bottom: 8px;
      color: var(--text);
      font-weight: 800;
      letter-spacing: -.02em
    }

    .empty p {
      font-size: .875rem;
      max-width: 380px;
      margin: 0 auto 22px;
      line-height: 1.65
    }

    /* ── Spinner ── */
    .spinner {
      display: inline-block;
      width: 15px;
      height: 15px;
      border: 2px solid rgba(164, 164, 244, .25);
      border-top-color: #A4A4F4;
      border-radius: 50%;
      animation: spin .65s linear infinite
    }

    @keyframes spin {
      to {
        transform: rotate(360deg)
      }
    }

    /* ── Skeleton loaders ── */
    @keyframes shimmer {
      0%   { background-position: -400px 0 }
      100% { background-position: 400px 0 }
    }
    .skeleton {
      background: linear-gradient(90deg,
        rgba(197,197,255,.12) 25%,
        rgba(197,197,255,.28) 37%,
        rgba(197,197,255,.12) 63%);
      background-size: 800px 100%;
      animation: shimmer 1.6s ease-in-out infinite;
      border-radius: 8px;
    }
    .skeleton-card {
      background: rgba(255,255,255,0.55);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255,255,255,0.65);
      border-radius: var(--r);
      padding: 24px;
      box-shadow: 0 4px 24px rgba(164,164,244,.13), inset 0 1px 0 rgba(255,255,255,.7);
      position: relative;
      overflow: hidden;
    }
    .skeleton-card .skeleton-stripe {
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 4px;
      background: linear-gradient(90deg, #FDE98A, #A4A4F4);
      opacity: .18;
    }
    .skeleton-label {
      width: 60%;
      height: 10px;
      margin-bottom: 12px;
    }
    .skeleton-value {
      width: 75%;
      height: 32px;
      margin-bottom: 8px;
    }
    .skeleton-pill {
      width: 50px;
      height: 20px;
      border-radius: 20px;
    }
    .skeleton-chart {
      width: 100%;
      height: 200px;
      border-radius: 12px;
    }
    .skeleton-tab {
      display: inline-block;
      width: 80px;
      height: 32px;
      border-radius: 50px;
      margin-right: 8px;
    }

    /* ── Status bar ── */
    #status-bar {
      background: #F0EFFF;
      color: #6b5fcc;
      padding: 9px 24px;
      font-size: .77rem;
      display: none;
      align-items: center;
      gap: 10px;
      letter-spacing: -.01em;
      border-bottom: 1px solid #D8D8FF
    }

    #status-bar.show {
      display: flex
    }

    /* ── Period selector ── */
    .period-btns {
      display: flex;
      gap: 4px;
      background: rgba(255, 255, 255, 0.3);
      backdrop-filter: blur(10px);
      -webkit-backdrop-filter: blur(10px);
      padding: 4px;
      border-radius: 999px;
      border: 1px solid rgba(255, 255, 255, 0.55)
    }

    .period-btn {
      padding: 5px 15px;
      border-radius: 999px;
      border: none;
      background: transparent;
      cursor: pointer;
      font-size: .77rem;
      font-weight: 700;
      color: var(--sub);
      transition: all .15s
    }

    .period-btn.active {
      background: rgba(253, 233, 138, 0.55);
      color: var(--text);
      box-shadow: 0 1px 6px rgba(253, 233, 138, 0.3)
    }

    .period-btn:hover:not(.active) {
      background: rgba(255, 255, 255, 0.4);
      color: var(--text)
    }

    /* ── Brand tabs (colorful pills) ── */
    .brand-tabs {
      display: flex;
      gap: 8px;
      margin-bottom: 18px;
      flex-wrap: wrap;
      width: fit-content
    }

    .brand-tab {
      padding: 7px 18px;
      border-radius: 50px;
      border: none;
      cursor: pointer;
      font-size: .8rem;
      font-weight: 700;
      transition: transform .2s ease, box-shadow .2s ease, opacity .2s ease;
      color: var(--text)
    }

    /* Each brand tab gets its own palette colour — inactive dimmed */
    .brand-tab:nth-child(3n+1) { background: var(--lavender) }
    .brand-tab:nth-child(3n+2) { background: var(--pink-light) }
    .brand-tab:nth-child(3n+3) { background: var(--mint) }

    .brand-tab:not(.active) {
      opacity: .55
    }

    .brand-tab.active {
      box-shadow: 0 3px 12px rgba(0, 0, 0, 0.12);
      transform: scale(1.05)
    }

    .brand-tab:hover {
      opacity: 1;
      transform: scale(1.07)
    }

    /* ── Health dots ── */
    .health-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 11px 0;
      border-bottom: 1px solid var(--border)
    }

    .health-row:last-child {
      border-bottom: none
    }

    .health-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      flex-shrink: 0
    }

    .dot-green {
      background: var(--green)
    }

    .dot-orange {
      background: var(--orange)
    }

    .dot-red {
      background: var(--red)
    }

    .dot-grey {
      background: #D6D3D1
    }

    /* ── CSV drop zone ── */
    .drop-zone {
      border: 2px dashed var(--border);
      border-radius: var(--r);
      padding: 28px;
      text-align: center;
      cursor: pointer;
      transition: all .15s;
      color: var(--sub);
      background: var(--bg)
    }

    .drop-zone:hover,
    .drop-zone.drag-over {
      border-color: var(--blue);
      background: var(--blue-dim)
    }

    .drop-zone input {
      display: none
    }

    /* ── Setup tabs ── */
    .setup-tabs {
      display: flex;
      gap: 2px;
      background: var(--bg);
      padding: 3px;
      border-radius: var(--r-sm);
      border: 1px solid var(--border);
      width: fit-content;
      margin-bottom: 20px
    }

    .setup-tab {
      padding: 7px 18px;
      border-radius: 8px;
      border: none;
      background: transparent;
      cursor: pointer;
      font-size: .82rem;
      font-weight: 700;
      color: var(--sub);
      transition: all .13s
    }

    .setup-tab.active {
      background: var(--card);
      color: var(--text);
      box-shadow: var(--s1)
    }

    .setup-tab:hover:not(.active) {
      color: var(--text)
    }

    .setup-panel {
      display: none;
      grid-column: 1 / -1
    }

    .setup-panel.active {
      display: grid;
      gap: 16px
    }

    /* ── Client Selector ── */
    #client-selector {
      position: fixed;
      inset: 0;
      background: linear-gradient(135deg, #C5C5FF 0%, #F7F6FF 35%, #FFD2EA 70%, #FFCC99 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 9998;
      overflow: hidden
    }

    #client-selector::before {
      content: '';
      position: absolute;
      inset: 0;
      background: radial-gradient(ellipse 70% 50% at 50% -10%, rgba(164, 164, 244, .22), transparent 65%);
      pointer-events: none
    }

    #client-selector.hidden {
      display: none
    }

    .cs-box {
      position: relative;
      z-index: 1;
      background: rgba(255, 255, 255, 0.82);
      border: 1px solid rgba(164, 164, 244, 0.35);
      border-radius: 22px;
      padding: 36px;
      width: min(820px, 94vw);
      max-height: 88vh;
      overflow-y: auto;
      backdrop-filter: blur(20px);
      -webkit-backdrop-filter: blur(20px);
      box-shadow: 0 16px 56px rgba(112, 112, 224, 0.18), 0 2px 8px rgba(164, 164, 244, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.9)
    }

    .cs-title {
      font-size: 1.35rem;
      font-weight: 800;
      color: #2d2b3d;
      letter-spacing: -.03em;
      margin-bottom: 4px
    }

    .cs-sub {
      font-size: .83rem;
      color: rgba(45, 43, 61, 0.45);
      line-height: 1.5
    }

    .client-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(178px, 1fr));
      gap: 12px;
      margin-bottom: 20px
    }

    .client-card {
      background: rgba(255, 255, 255, 0.7);
      border: 1px solid rgba(164, 164, 244, 0.2);
      border-radius: 14px;
      padding: 24px 16px 18px;
      cursor: pointer;
      transition: all .18s;
      text-align: center;
      position: relative
    }

    .client-card:hover {
      background: rgba(255, 255, 255, 0.9);
      border-color: rgba(164, 164, 244, 0.45);
      transform: translateY(-3px);
      box-shadow: 0 14px 36px rgba(164, 164, 244, 0.18)
    }

    .client-card-emoji {
      font-size: 2.2rem;
      margin-bottom: 10px;
      display: block
    }

    .client-card-logo {
      width: 56px;
      height: 56px;
      border-radius: 10px;
      object-fit: contain;
      margin: 0 auto 10px;
      display: block;
      background: linear-gradient(135deg, #A4A4F4, #FFA4D4);
      padding: 6px;
    }

    .client-card-initials {
      width: 56px;
      height: 56px;
      border-radius: 10px;
      margin: 0 auto 10px;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 1.3rem;
      font-weight: 800;
      color: #fff;
      letter-spacing: -.02em;
    }

    .client-card-name {
      font-weight: 800;
      font-size: .88rem;
      color: #2d2b3d;
      margin-bottom: 5px;
      word-break: break-word;
      line-height: 1.3;
      letter-spacing: -.01em
    }

    .client-card-meta {
      font-size: .71rem;
      color: rgba(45, 43, 61, 0.4);
      margin-top: 3px
    }

    .client-card-add {
      border-style: dashed;
      border-color: rgba(164, 164, 244, 0.35)
    }

    .client-card-add .client-card-name {
      color: #7070E0
    }

    .client-card-add:hover {
      border-color: rgba(164, 164, 244, 0.55);
      background: rgba(164, 164, 244, 0.08)
    }

    .client-card-add:hover .client-card-name {
      color: #5858CC
    }

    .client-card-edit {
      position: absolute;
      top: 8px;
      right: 8px;
      background: rgba(164, 164, 244, 0.12);
      border: 1px solid rgba(164, 164, 244, 0.25);
      border-radius: 6px;
      padding: 2px 8px;
      font-size: .67rem;
      cursor: pointer;
      opacity: 0;
      transition: opacity .12s;
      color: #7070E0;
      font-weight: 700
    }

    .client-card:hover .client-card-edit {
      opacity: 1
    }

    .client-card-delete {
      position: absolute;
      top: 8px;
      left: 8px;
      background: rgba(255, 164, 212, 0.15);
      border: 1px solid rgba(255, 164, 212, 0.3);
      border-radius: 6px;
      padding: 2px 8px;
      font-size: .67rem;
      cursor: pointer;
      opacity: 0;
      transition: opacity .12s;
      color: #c0305a;
      font-weight: 700
    }

    .client-card:hover .client-card-delete {
      opacity: 1
    }

    .cs-footer {
      border-top: 1px solid rgba(164, 164, 244, 0.15);
      padding-top: 16px;
      display: flex;
      justify-content: space-between;
      align-items: center;
      flex-wrap: wrap;
      gap: 10px
    }

    .cs-footer-note {
      font-size: .73rem;
      color: rgba(45, 43, 61, 0.35)
    }

    .cs-lock-btn {
      background: rgba(164, 164, 244, 0.1);
      border: 1px solid rgba(164, 164, 244, 0.25);
      color: #7070E0;
      font-size: .78rem;
      padding: 7px 14px;
      border-radius: var(--r-sm);
      cursor: pointer;
      font-weight: 700;
      transition: all .15s
    }

    .cs-lock-btn:hover {
      background: rgba(164, 164, 244, 0.18);
      color: #5858CC
    }

    /* ── Password admin modal ── */
    #pw-modal {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, .45);
      backdrop-filter: blur(6px);
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 10000
    }

    #pw-modal.hidden {
      display: none
    }

    .pw-modal-box {
      background: #fff;
      border-radius: 18px;
      padding: 28px;
      width: min(380px, 90vw);
      box-shadow: var(--s3)
    }

    /* ══════════════════════════════════════════════
       Ads Uploader
    ══════════════════════════════════════════════ */
    .uploader-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 18px;
      align-items: start
    }
    @media(max-width:900px){.uploader-grid{grid-template-columns:1fr}}

    .uploader-drop-zone {
      border: 2px dashed var(--border-strong);
      border-radius: var(--r);
      padding: 32px 20px;
      text-align: center;
      cursor: pointer;
      background: var(--blue-dim);
      transition: all .2s;
      position: relative
    }
    .uploader-drop-zone:hover,
    .uploader-drop-zone.drag-over {
      border-color: var(--blue);
      background: #eaeaff;
      transform: translateY(-1px)
    }
    .uploader-drop-zone input[type=file] {
      position: absolute;
      inset: 0;
      opacity: 0;
      cursor: pointer;
      width: 100%;
      height: 100%
    }
    .uploader-drop-icon {
      font-size: 2rem;
      margin-bottom: 10px
    }
    .uploader-drop-title {
      font-weight: 700;
      font-size: .95rem;
      color: var(--text);
      margin-bottom: 4px
    }
    .uploader-drop-sub {
      font-size: .78rem;
      color: var(--sub)
    }

    /* image preview grid */
    .img-preview-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
      gap: 10px;
      margin-top: 14px
    }
    .img-preview-item {
      position: relative;
      border-radius: var(--r-sm);
      overflow: hidden;
      aspect-ratio: 1;
      background: var(--bg);
      border: 1px solid var(--border)
    }
    .img-preview-item img {
      width: 100%;
      height: 100%;
      object-fit: cover
    }
    .img-preview-remove {
      position: absolute;
      top: 4px;
      right: 4px;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background: rgba(0,0,0,.55);
      color: #fff;
      border: none;
      cursor: pointer;
      font-size: 11px;
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 1;
      transition: background .15s
    }
    .img-preview-remove:hover { background: rgba(220,38,38,.85) }

    /* copy fields */
    .copy-field-row {
      display: flex;
      gap: 8px;
      margin-bottom: 10px;
      align-items: flex-start
    }
    .copy-field-row input,
    .copy-field-row textarea {
      flex: 1;
      padding: 9px 12px;
      border: 1px solid var(--border);
      border-radius: var(--r-sm);
      font-size: .875rem;
      font-family: inherit;
      background: #fff;
      color: var(--text);
      outline: none;
      transition: border-color .15s, box-shadow .15s;
      resize: vertical
    }
    .copy-field-row input:focus,
    .copy-field-row textarea:focus {
      border-color: var(--blue);
      box-shadow: 0 0 0 3px rgba(164,164,244,.18)
    }
    .copy-field-remove {
      width: 28px;
      height: 28px;
      margin-top: 6px;
      border-radius: 50%;
      border: 1px solid var(--border);
      background: #fff;
      color: var(--sub);
      cursor: pointer;
      font-size: 14px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      transition: all .15s
    }
    .copy-field-remove:hover {
      background: var(--red-dim);
      border-color: var(--red);
      color: #be185d
    }
    .copy-add-btn {
      font-size: .8rem;
      color: var(--blue);
      font-weight: 600;
      background: none;
      border: none;
      cursor: pointer;
      padding: 0;
      margin-top: 2px;
      display: flex;
      align-items: center;
      gap: 4px;
      transition: color .15s
    }
    .copy-add-btn:hover { color: #6060d0 }

    /* char counter */
    .char-counter {
      font-size: .72rem;
      color: var(--sub);
      text-align: right;
      margin-top: 2px
    }
    .char-counter.warn { color: #f59e0b }
    .char-counter.over { color: #ef4444 }

    /* campaign/adset select */
    .uploader-select {
      width: 100%;
      padding: 9px 12px;
      border: 1px solid var(--border);
      border-radius: var(--r-sm);
      font-size: .875rem;
      font-family: inherit;
      background: #fff;
      color: var(--text);
      outline: none;
      cursor: pointer;
      transition: border-color .15s, box-shadow .15s;
      appearance: none;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239896b0'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: right 10px center;
      background-size: 16px
    }
    .uploader-select:focus {
      border-color: var(--blue);
      box-shadow: 0 0 0 3px rgba(164,164,244,.18)
    }

    /* upload progress */
    .upload-progress-bar {
      height: 6px;
      border-radius: 99px;
      background: var(--border);
      overflow: hidden;
      margin-top: 10px
    }
    .upload-progress-fill {
      height: 100%;
      background: linear-gradient(90deg, var(--blue) 0%, var(--lavender) 100%);
      border-radius: 99px;
      transition: width .3s ease;
      width: 0%
    }
    .upload-status-text {
      font-size: .8rem;
      color: var(--sub);
      margin-top: 6px
    }

    /* creative library */
    .creative-library-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
      gap: 14px;
      margin-top: 16px
    }
    .creative-card {
      background: var(--card);
      border: 1px solid var(--border);
      border-radius: var(--r);
      overflow: hidden;
      transition: box-shadow .2s, transform .2s
    }
    .creative-card:hover {
      box-shadow: var(--s2);
      transform: translateY(-2px)
    }
    .creative-card-thumb {
      width: 100%;
      aspect-ratio: 1;
      object-fit: cover;
      background: var(--blue-dim);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 2rem
    }
    .creative-card-thumb img {
      width: 100%;
      height: 100%;
      object-fit: cover
    }
    .creative-card-body {
      padding: 12px
    }
    .creative-card-name {
      font-weight: 600;
      font-size: .85rem;
      margin-bottom: 4px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis
    }
    .creative-card-meta {
      font-size: .75rem;
      color: var(--sub);
      margin-bottom: 8px
    }
    .creative-card-status {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      font-size: .72rem;
      font-weight: 600;
      padding: 2px 8px;
      border-radius: 99px
    }
    .creative-card-status.pending {
      background: var(--orange-dim);
      color: #92400e
    }
    .creative-card-status.uploaded {
      background: var(--green-dim);
      color: #065f46
    }
    .creative-card-status.error {
      background: var(--red-dim);
      color: #9d174d
    }
    .creative-card-actions {
      display: flex;
      gap: 6px;
      margin-top: 8px
    }
    .creative-card-actions button {
      flex: 1;
      padding: 5px;
      border-radius: var(--r-xs);
      border: 1px solid var(--border);
      background: var(--bg);
      font-size: .72rem;
      font-weight: 600;
      cursor: pointer;
      color: var(--sub);
      transition: all .15s
    }
    .creative-card-actions button:hover {
      background: var(--blue-dim);
      color: var(--text);
      border-color: var(--blue-mid)
    }
    .creative-card-actions button.danger:hover {
      background: var(--red-dim);
      color: #be185d;
      border-color: var(--red)
    }

    /* library empty state */
    .library-empty {
      text-align: center;
      padding: 40px 20px;
      color: var(--sub)
    }
    .library-empty-icon {
      font-size: 2.5rem;
      margin-bottom: 10px;
      opacity: .5
    }
    .library-empty p {
      font-size: .875rem
    }

    /* upload modal overlay */
    #upload-result-modal {
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,.45);
      backdrop-filter: blur(6px);
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 9000
    }
    #upload-result-modal.hidden { display: none }
    .upload-result-box {
      background: #fff;
      border-radius: 20px;
      padding: 32px 28px;
      width: min(420px, 92vw);
      text-align: center;
      box-shadow: var(--s3)
    }
    .upload-result-icon {
      font-size: 2.5rem;
      margin-bottom: 12px
    }
    .upload-result-box h3 {
      font-size: 1.1rem;
      font-weight: 700;
      margin-bottom: 8px
    }
    .upload-result-box p {
      font-size: .875rem;
      color: var(--sub);
      margin-bottom: 20px;
      line-height: 1.55
    }
