/* ===========================
   Aviva Farmacia - Design System
   Mobile-first responsive
   =========================== */

:root {
    --primary-darkest: #004B73;
    --primary-default: #016B9E;
    --primary-dark: #0E74A5;
    --primary: #3497C3;
    --primary-btn: #00497A;
    --primary-light: #5DBBE5;
    --primary-lighter: #94D4FA;
    --primary-lightest: #E5F7FF;
    --primary-100: #EBF9FF;
    --secondary-orange: #FE9838;
    --secondary-orange-med: #F37053;
    --text-title: #323B3F;
    --text-primary: #343740;
    --text-body-1: #58656A;
    --text-body-2: #808B8F;
    --text-body-3: #98A1A4;
    --text-secondary: #B1B3B9;
    --neutral-50: #F6F7F9;
    --neutral-100: #F1F2F4;
    --neutral-200: #E7E8E9;
    --neutral-300: #DEE1E2;
    --neutral-400: #BFC5C7;
    --success: #30C97A;
    --warning: #EEAB28;
    --error: #F74548;
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --radius-pill: 500px;
    --shadow-sm: 0 1px 3px rgba(0,75,115,.08);
    --shadow-md: 0 4px 12px rgba(0,75,115,.1);
    --shadow-lg: 0 8px 30px rgba(0,75,115,.12);
    --transition: 200ms ease;
    --sidebar-w: 240px;
    --header-h: 56px;
}

/* Reset */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{font-family:'Manrope',-apple-system,system-ui,sans-serif;color:var(--text-primary);background:var(--neutral-50);min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
button{cursor:pointer;font-family:inherit}
input,select,textarea{font-family:inherit}

/* ===========================
   App Layout
   =========================== */
.app-layout{display:flex;min-height:100vh;min-height:100dvh}
.app-main{flex:1;margin-left:0;padding-top:var(--header-h);transition:margin-left .3s ease}
.app-content{padding:16px;max-width:1400px;margin:0 auto}

@media(min-width:769px){
    .app-main{margin-left:var(--sidebar-w)}
    .app-content{padding:24px}
}

/* ===========================
   Header
   =========================== */
.app-header{position:fixed;top:0;left:0;right:0;z-index:200;display:flex;align-items:center;justify-content:space-between;height:var(--header-h);padding:0 16px;background:#fff;border-bottom:1px solid var(--neutral-200);box-shadow:var(--shadow-sm)}
.header-left{display:flex;align-items:center;gap:12px}
.header-logo{height:28px}
.header-divider{width:1px;height:20px;background:var(--neutral-300);display:none}
.header-title{font-size:13px;font-weight:600;color:var(--primary-darkest);display:none}
.header-burger{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;color:var(--primary-darkest);border-radius:8px}
.header-burger:active{background:var(--neutral-100)}
.header-right{display:flex;align-items:center;gap:8px}
.user-chip{display:flex;align-items:center;gap:6px;padding:4px 12px;font-size:13px;font-weight:600;color:var(--primary-darkest);background:var(--primary-100);border:none;border-radius:var(--radius-pill)}
.user-chip-avatar{width:24px;height:24px;border-radius:50%;background:var(--primary-btn);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.user-menu{position:absolute;top:calc(var(--header-h) - 4px);right:16px;background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:180px;z-index:300;overflow:hidden}
.user-menu.hidden{display:none}
.user-menu-item{display:block;width:100%;padding:10px 16px;font-size:13px;font-weight:500;color:var(--text-primary);background:none;border:none;text-align:left}
.user-menu-item:hover{background:var(--neutral-50)}
.user-menu-item--danger{color:var(--error)}
.user-menu-sep{height:1px;background:var(--neutral-200);margin:4px 0}

@media(min-width:769px){
    .header-burger{display:none}
    .header-divider,.header-title{display:block}
    .app-header{left:var(--sidebar-w);padding:0 24px}
}

/* ===========================
   Sidebar
   =========================== */
.app-sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:#fff;border-right:1px solid var(--neutral-200);z-index:250;transform:translateX(-100%);transition:transform .3s ease;display:flex;flex-direction:column;overflow-y:auto}
.app-sidebar.open{transform:translateX(0)}
.sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:240;display:none}
.sidebar-overlay.open{display:block}
.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;height:var(--header-h);border-bottom:1px solid var(--neutral-200)}
.sidebar-logo{height:28px}
.sidebar-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-body-2);border-radius:8px;font-size:20px}
.sidebar-nav{flex:1;padding:12px 8px}
.nav-label{padding:8px 12px 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-body-3)}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:500;color:var(--text-body-1);border-radius:var(--radius-sm);margin-bottom:2px;border:none;background:none;width:100%;text-align:left;transition:all var(--transition)}
.nav-item:hover{background:var(--primary-100);color:var(--primary-darkest);text-decoration:none}
.nav-item.active{background:var(--primary-100);color:var(--primary-btn);font-weight:600}
.nav-item svg{flex-shrink:0}
.sidebar-footer{padding:12px 16px;border-top:1px solid var(--neutral-200);font-size:11px;color:var(--text-body-3);text-align:center}

@media(min-width:769px){
    .app-sidebar{transform:translateX(0)}
    .sidebar-close{display:none}
    .sidebar-overlay{display:none!important}
}

/* ===========================
   Buttons
   =========================== */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;font-size:14px;font-weight:600;border-radius:var(--radius-pill);transition:all var(--transition);white-space:nowrap;border:2px solid transparent}
.btn-primary{color:#fff;background:var(--primary-btn);border-color:var(--primary-btn)}
.btn-primary:hover{background:var(--primary-darkest);border-color:var(--primary-darkest)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-secondary{color:var(--primary-btn);background:transparent;border-color:var(--primary-btn)}
.btn-secondary:hover{background:var(--primary-100)}
.btn-ghost{color:var(--primary-btn);background:transparent;border:1.5px solid var(--neutral-300)}
.btn-ghost:hover{border-color:var(--primary);background:var(--primary-100)}
.btn-danger{color:var(--error);background:transparent;border:1.5px solid var(--neutral-300)}
.btn-danger:hover{border-color:var(--error);background:#fee}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:none;border:none;color:var(--text-body-2);border-radius:8px;transition:all var(--transition)}
.btn-icon:hover{color:var(--primary-btn);background:var(--primary-100)}
.btn-icon--danger:hover{color:var(--error);background:#fee}

/* ===========================
   Page Header
   =========================== */
.page-header{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}
.page-header h1{font-size:20px;font-weight:700;color:var(--primary-darkest)}
.page-actions{display:flex;flex-wrap:wrap;gap:8px}
@media(min-width:769px){
    .page-header{flex-direction:row;align-items:center;justify-content:space-between}
    .page-header h1{font-size:24px}
}

/* ===========================
   Cards / Stats
   =========================== */
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}
.stat-card{background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-sm)}
.stat-card-value{font-size:28px;font-weight:700;color:var(--primary-darkest)}
.stat-card-label{font-size:12px;font-weight:600;color:var(--text-body-2);margin-top:2px}
.stat-card--accent .stat-card-value{color:var(--secondary-orange)}
.stat-card--success .stat-card-value{color:var(--success)}
.stat-card--warning .stat-card-value{color:var(--warning)}
.stat-card--error .stat-card-value{color:var(--error)}

@media(min-width:769px){
    .stats-grid{grid-template-columns:repeat(4,1fr);gap:16px}
}

/* ===========================
   Card generic
   =========================== */
.card{background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--neutral-100)}
.card-header h3{font-size:14px;font-weight:700;color:var(--primary-darkest)}
.card-body{padding:16px}

/* ===========================
   Login Page
   =========================== */
.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:24px;background:linear-gradient(135deg,var(--primary-100) 0%,var(--primary-lightest) 100%)}
.login-card{width:100%;max-width:380px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:32px 24px}
.login-logo{display:block;height:36px;margin:0 auto 8px}
.login-subtitle{text-align:center;font-size:13px;color:var(--text-body-2);margin-bottom:24px}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:13px;font-weight:600;color:var(--text-body-1);margin-bottom:4px}
.form-input{width:100%;padding:10px 14px;font-size:14px;color:var(--text-primary);background:var(--neutral-50);border:1.5px solid var(--neutral-300);border-radius:var(--radius-sm);outline:none;transition:border-color var(--transition)}
.form-input:focus{border-color:var(--primary);background:#fff}
.form-input--error{border-color:var(--error)}
.form-error{font-size:12px;color:var(--error);margin-top:4px}
.login-btn{width:100%;padding:12px;font-size:15px;margin-top:8px}
.login-error{text-align:center;font-size:13px;color:var(--error);margin-bottom:12px;padding:8px;background:#fee;border-radius:var(--radius-sm)}

/* ===========================
   Drop Zone
   =========================== */
.drop-zone{position:relative;display:flex;align-items:center;justify-content:center;min-height:180px;padding:24px;background:var(--primary-100);border:2px dashed var(--primary-lighter);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition)}
.drop-zone:hover,.drop-zone.drag-over{border-color:var(--primary);background:var(--primary-lightest)}
.drop-zone.drag-over{box-shadow:0 0 0 4px rgba(52,151,195,.15)}
.drop-zone-content{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;pointer-events:none}
.drop-zone-content h2{font-size:16px;font-weight:700;color:var(--primary-darkest)}
.drop-zone-content p{font-size:13px;color:var(--text-body-1)}
.drop-hint{font-size:11px;color:var(--text-body-3)}
.drop-icon{color:var(--primary)}
.file-input-hidden{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
/* Mobile camera button */
.camera-btn{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:8px 16px;font-size:13px;font-weight:600;color:var(--primary-btn);background:#fff;border:1.5px solid var(--primary);border-radius:var(--radius-pill);pointer-events:auto;z-index:1}
.camera-btn svg{color:var(--primary)}
@media(min-width:769px){
    .drop-zone{min-height:200px;padding:40px}
    .drop-zone-content h2{font-size:18px}
    .camera-btn{display:none}
}

/* ===========================
   File Queue
   =========================== */
.file-queue{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.file-card{position:relative;background:#fff;border:1.5px solid var(--neutral-200);border-radius:var(--radius-md);overflow:hidden;transition:all var(--transition)}
.file-card:hover{border-color:var(--primary-lighter);box-shadow:var(--shadow-sm)}
.file-card-img{width:100%;height:100px;object-fit:cover;background:var(--neutral-100)}
.file-card-info{padding:6px 8px}
.file-card-name{font-size:11px;font-weight:600;color:var(--text-title);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-card-size{font-size:10px;color:var(--text-body-3)}
.file-card-status{position:absolute;top:4px;right:4px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:11px}
.file-card-status--pending{background:var(--neutral-200);color:var(--text-body-2)}
.file-card-status--processing{background:var(--primary-lightest);color:var(--primary)}
.file-card-status--done{background:#eafbf1;color:var(--success)}
.file-card-status--error{background:#fee;color:var(--error)}
.file-card-remove{position:absolute;top:4px;left:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;background:rgba(0,0,0,.45);border:none;border-radius:50%;opacity:0;transition:opacity var(--transition)}
.file-card:hover .file-card-remove{opacity:1}

@media(min-width:769px){
    .file-queue{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
    .file-card-img{height:120px}
}

/* ===========================
   Progress
   =========================== */
.progress-container{margin:16px 0}
.progress-bar-bg{height:6px;background:var(--neutral-200);border-radius:3px;overflow:hidden}
.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-light));border-radius:3px;transition:width .4s ease}
.progress-text{font-size:12px;color:var(--text-body-2);margin-top:6px;text-align:center}

/* ===========================
   Data Table
   =========================== */
.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}
.data-table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}
.data-table thead{position:sticky;top:0;z-index:10}
.data-table th{padding:10px 10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--primary-btn);text-align:left;user-select:none}
.data-table td{padding:6px 8px;border-bottom:1px solid var(--neutral-100);vertical-align:middle}
.data-table tbody tr:hover{background:var(--primary-100)}
.data-table tbody tr:nth-child(even){background:var(--neutral-50)}
.data-table tbody tr:nth-child(even):hover{background:var(--primary-100)}
.cell-input{width:100%;min-width:70px;padding:4px 6px;font-size:13px;color:var(--text-primary);background:transparent;border:1.5px solid transparent;border-radius:4px;outline:none;transition:all var(--transition)}
.cell-input:hover{border-color:var(--neutral-300)}
.cell-input:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px rgba(52,151,195,.1)}
.cell-input--wide{min-width:150px}
.cell-input--num{min-width:60px;text-align:right}

/* ===========================
   Filters Bar
   =========================== */
.filters-bar{display:flex;flex-direction:column;gap:10px;padding:14px;background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);margin-bottom:16px}
.filters-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end}
.filter-group{display:flex;flex-direction:column;gap:3px;flex:1;min-width:140px}
.filter-group label{font-size:11px;font-weight:600;color:var(--text-body-2);text-transform:uppercase;letter-spacing:.04em}
.filter-input{padding:7px 10px;font-size:13px;color:var(--text-primary);background:var(--neutral-50);border:1.5px solid var(--neutral-300);border-radius:var(--radius-sm);outline:none}
.filter-input:focus{border-color:var(--primary)}
.filter-actions{display:flex;gap:8px;align-items:end;padding-top:16px}

@media(min-width:769px){
    .filters-bar{flex-direction:row;flex-wrap:wrap;align-items:end}
    .filter-group{min-width:160px;flex:unset}
}

/* ===========================
   Tags
   =========================== */
.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;font-size:11px;font-weight:600;border-radius:var(--radius-pill);color:#fff;white-space:nowrap}
.tag-remove{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:12px;line-height:1;background:rgba(255,255,255,.3);border:none;border-radius:50%;color:#fff;cursor:pointer;padding:0}
.tag-remove:hover{background:rgba(255,255,255,.5)}
.tags-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.tag-add-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:14px;color:var(--primary);background:var(--primary-100);border:1px dashed var(--primary-lighter);border-radius:50%;cursor:pointer;transition:all var(--transition)}
.tag-add-btn:hover{background:var(--primary-lightest);border-color:var(--primary)}

/* Tag picker dropdown */
.tag-picker{position:relative;display:inline-block}
.tag-picker-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:8px;min-width:200px;z-index:100}
.tag-picker-dropdown.hidden{display:none}
.tag-option{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px;transition:background var(--transition)}
.tag-option:hover{background:var(--neutral-50)}
.tag-option-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}

/* ===========================
   Invoice Detail Split View
   =========================== */
.detail-split{display:flex;flex-direction:column;gap:16px}
.detail-viewer{background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-md);overflow:hidden;min-height:300px;display:flex;align-items:center;justify-content:center}
.detail-viewer img{max-width:100%;max-height:70vh;object-fit:contain}
.detail-data{flex:1;min-width:0}
.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}
.meta-item{padding:8px 12px;background:var(--neutral-50);border-radius:var(--radius-sm)}
.meta-item-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-body-3)}
.meta-item-value{font-size:13px;font-weight:600;color:var(--text-title);margin-top:2px}

@media(min-width:1024px){
    .detail-split{flex-direction:row}
    .detail-viewer{width:45%;max-height:80vh;overflow:auto}
    .detail-data{width:55%}
}

/* ===========================
   Activity Timeline
   =========================== */
.timeline{display:flex;flex-direction:column;gap:0}
.timeline-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--neutral-100)}
.timeline-item:last-child{border-bottom:none}
.timeline-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);margin-top:5px;flex-shrink:0}
.timeline-content{flex:1;min-width:0}
.timeline-text{font-size:13px;color:var(--text-primary)}
.timeline-text strong{font-weight:600}
.timeline-time{font-size:11px;color:var(--text-body-3);margin-top:2px}

/* ===========================
   Status Badge
   =========================== */
.status{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;font-size:11px;font-weight:600;border-radius:var(--radius-pill)}
.status--pending{color:var(--warning);background:#FFF8E7}
.status--processing{color:var(--primary);background:var(--primary-100)}
.status--completed{color:var(--success);background:#eafbf1}
.status--error{color:var(--error);background:#fee}

/* ===========================
   Badge
   =========================== */
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;font-size:11px;font-weight:700;color:#fff;background:var(--primary);border-radius:var(--radius-pill)}

/* ===========================
   Modal
   =========================== */
.modal-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.4);backdrop-filter:blur(4px);animation:fadeIn .2s ease}
.modal-overlay.hidden{display:none}
.modal{width:100%;max-width:480px;max-height:90vh;overflow-y:auto;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:slideUp .3s ease}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 0}
.modal-header h3{font-size:16px;font-weight:700;color:var(--primary-darkest)}
.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--text-body-2);background:none;border:none;border-radius:8px}
.modal-close:hover{background:var(--neutral-100)}
.modal-body{padding:16px 20px}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px 18px}

/* ===========================
   Toast
   =========================== */
.toast-container{position:fixed;bottom:16px;right:16px;left:16px;z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;font-size:13px;font-weight:500;color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);animation:slideUp .3s ease;pointer-events:auto}
.toast--success{background:var(--success)}
.toast--error{background:var(--error)}
.toast--info{background:var(--primary-btn)}
.toast--warning{background:var(--warning);color:var(--text-title)}

@media(min-width:769px){
    .toast-container{left:auto;right:24px;bottom:24px;max-width:380px}
}

/* ===========================
   Spinner
   =========================== */
@keyframes spin{to{transform:rotate(360deg)}}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--primary-lighter);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}
.spinner-lg{width:32px;height:32px;border-width:3px}

/* ===========================
   Pagination
   =========================== */
.pagination{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:16px;flex-wrap:wrap}
.pagination-btn{min-width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0 8px;font-size:13px;font-weight:500;color:var(--text-body-1);background:#fff;border:1px solid var(--neutral-300);border-radius:6px;transition:all var(--transition)}
.pagination-btn:hover{border-color:var(--primary);color:var(--primary)}
.pagination-btn.active{background:var(--primary-btn);color:#fff;border-color:var(--primary-btn)}
.pagination-btn:disabled{opacity:.4;cursor:not-allowed}
.pagination-info{font-size:12px;color:var(--text-body-2);margin:0 8px}

/* ===========================
   Empty State
   =========================== */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;color:var(--text-body-2)}
.empty-state svg{color:var(--neutral-400);margin-bottom:12px}
.empty-state h3{font-size:16px;font-weight:600;color:var(--text-body-1);margin-bottom:4px}
.empty-state p{font-size:13px}

/* ===========================
   Utility
   =========================== */
.hidden{display:none!important}
.text-center{text-align:center}
.text-right{text-align:right}
.text-muted{color:var(--text-body-2)}
.text-sm{font-size:12px}
.mt-8{margin-top:8px}
.mt-16{margin-top:16px}
.mb-16{margin-bottom:16px}
.gap-8{gap:8px}
.flex{display:flex}
.flex-wrap{flex-wrap:wrap}
.items-center{align-items:center}
.justify-between{justify-content:space-between}
.w-full{width:100%}
.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}

/* ===========================
   Animations
   =========================== */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
