/* ──────────────────────────────────────────────────────────────────────────
   Tokens
   ─────────────────────────────────────────────────────────────────────── */
:root {
  --bg:           #fafaf7;
  --bg-2:         #f4f4ee;
  --surface:      #ffffff;
  --border:       #ebe9e2;
  --border-2:     #d6d3ca;
  --text-1:       #18181b;
  --text-2:       #57534e;
  --text-3:       #a8a29e;
  --primary:      #18181b;
  --primary-fg:   #fafaf7;
  --accent:       #d97706;
  --accent-soft:  #fef3c7;
  --danger:       #dc2626;
  --success:      #15803d;
  --r-sm:         8px;
  --r-md:         14px;
  --r-lg:         20px;
  --sh-sm:        0 1px 2px rgba(24,24,27,.04), 0 1px 3px rgba(24,24,27,.05);
  --sh-md:        0 4px 16px rgba(24,24,27,.08);
  --sh-lg:        0 24px 60px rgba(24,24,27,.14), 0 8px 20px rgba(24,24,27,.06);
  --max-w:        1200px;
}

/* ──────────────────────────────────────────────────────────────────────────
   Base
   ─────────────────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:'Inter',system-ui,sans-serif;
  background:var(--bg);
  color:var(--text-1);
  font-feature-settings:'cv11','ss01','ss03';
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-thumb{background:#d6d3ca;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#a8a29e}
hr.rule{border:0;height:1px;background:var(--border);margin:2rem 0}
.d-none{display:none!important}
.mb-3{margin-bottom:1rem!important}

/* ──────────────────────────────────────────────────────────────────────────
   Top Nav
   ─────────────────────────────────────────────────────────────────────── */
.topnav{
  position:sticky;top:0;z-index:100;
  background:rgba(250,250,247,.85);
  backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
}
.nav-inner{
  max-width:var(--max-w);margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.95rem 1.75rem;
}
.brand{display:flex;align-items:center;gap:.75rem;flex-shrink:0}
.brand-mark{
  width:32px;height:32px;border-radius:9px;
  background:var(--primary);color:var(--primary-fg);
  display:flex;align-items:center;justify-content:center;
  font-family:'Fraunces',serif;font-weight:600;font-size:1rem;font-style:italic;
}
.brand-name{
  font-size:1rem;font-weight:600;letter-spacing:-.02em;
}
.brand-name em{
  font-family:'Fraunces',serif;font-style:italic;font-weight:500;
}

.btn-icon-ghost{
  width:34px;height:34px;border-radius:9px;
  background:transparent;border:1px solid var(--border-2);
  color:var(--text-2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:.95rem;
  transition:background .15s,color .15s;
}
.btn-icon-ghost:hover{background:var(--bg-2);color:var(--text-1)}

.gallery-tools{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}

.search-inline{position:relative;display:flex;align-items:center}
.search-inline i{
  position:absolute;left:.7rem;color:var(--text-3);font-size:.8rem;pointer-events:none;
}
.search-inline input{
  background:var(--surface);border:1px solid var(--border-2);border-radius:99px;
  color:var(--text-1);font:500 .8rem 'Inter',sans-serif;
  padding:.4rem .9rem .4rem 1.85rem;width:200px;outline:none;
  transition:border-color .15s,box-shadow .15s;
  box-shadow:var(--sh-sm);
}
.search-inline input:focus{
  border-color:var(--text-1);box-shadow:0 0 0 3px rgba(24,24,27,.05);
}
.search-inline input::placeholder{color:var(--text-3)}

/* ──────────────────────────────────────────────────────────────────────────
   Buttons
   ─────────────────────────────────────────────────────────────────────── */
.btn-primary{
  background:var(--primary);color:var(--primary-fg);
  border:none;border-radius:var(--r-sm);
  font:600 .855rem 'Inter',sans-serif;
  padding:.55rem 1rem;cursor:pointer;
  display:inline-flex;align-items:center;gap:.4rem;
  transition:opacity .15s,transform .1s;
  box-shadow:var(--sh-sm);
}
.btn-primary:hover:not(:disabled){opacity:.9}
.btn-primary:active:not(:disabled){transform:scale(.98)}
.btn-primary:disabled{opacity:.4;cursor:not-allowed}
.btn-block{width:100%;padding:.75rem 1rem;justify-content:center}

.btn-ghost{
  background:transparent;color:var(--text-1);
  border:1px solid var(--border-2);border-radius:var(--r-sm);
  font:500 .855rem 'Inter',sans-serif;
  padding:.55rem 1rem;cursor:pointer;
  transition:background .15s;
}
.btn-ghost:hover{background:var(--bg-2)}

.btn-danger{
  background:var(--danger);color:#fff;
  border:none;border-radius:var(--r-sm);
  font:600 .855rem 'Inter',sans-serif;
  padding:.55rem 1.1rem;cursor:pointer;
  transition:opacity .15s;
}
.btn-danger:hover:not(:disabled){opacity:.9}
.btn-danger:disabled{opacity:.4;cursor:not-allowed}

.btn-icon{
  width:32px;height:32px;border-radius:8px;
  background:transparent;border:none;color:var(--text-2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:.9rem;
  transition:background .15s,color .15s;
}
.btn-icon:hover{background:var(--bg-2);color:var(--text-1)}

/* ──────────────────────────────────────────────────────────────────────────
   Page wrapper & Hero
   ─────────────────────────────────────────────────────────────────────── */
.page{max-width:var(--max-w);margin:0 auto;padding:2rem 1.75rem 1.5rem}

.hero{
  display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:end;
  margin-bottom:2rem;
}
@media(max-width:780px){.hero{grid-template-columns:1fr}}

.hero-text{min-width:0}
.hero-eyebrow{
  font-size:.72rem;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--accent);margin-bottom:.55rem;
}
.hero-title{
  font-size:clamp(1.85rem, 3.5vw, 2.5rem);
  font-weight:700;letter-spacing:-.03em;line-height:1.08;
  margin-bottom:.6rem;
}
.hero-title em{
  font-family:'Fraunces',serif;font-style:italic;font-weight:500;
  letter-spacing:-.02em;
  background:linear-gradient(135deg,#18181b 0%,#57534e 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.hero-sub{
  font-size:.95rem;color:var(--text-2);
  max-width:480px;line-height:1.5;
}

/* Stats — compact horizontal pill */
.stats{
  display:flex;align-items:center;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  padding:.35rem;
  width:fit-content;
  box-shadow:var(--sh-sm);
}
.stat{padding:.5rem 1rem;display:flex;flex-direction:column;align-items:flex-start;gap:.1rem}
.stat-num{
  font-size:1.15rem;font-weight:700;letter-spacing:-.02em;
  color:var(--text-1);line-height:1;
  font-feature-settings:'tnum';
}
.stat-label{
  font-size:.65rem;font-weight:500;
  color:var(--text-2);text-transform:uppercase;letter-spacing:.08em;
}
.stat-divider{width:1px;height:24px;background:var(--border)}

/* ──────────────────────────────────────────────────────────────────────────
   Sections
   ─────────────────────────────────────────────────────────────────────── */
.section{margin:0}
.section-head{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:1rem;flex-wrap:wrap;gap:1rem;
}
.section-title{
  font-size:1.15rem;font-weight:700;letter-spacing:-.02em;
}
.section-meta{
  font-size:.78rem;color:var(--text-3);
}

/* ──────────────────────────────────────────────────────────────────────────
   Upload
   ─────────────────────────────────────────────────────────────────────── */
.upload-row{
  display:grid;grid-template-columns:1.4fr 1fr;gap:1rem;
}
@media(max-width:780px){.upload-row{grid-template-columns:1fr}}

.dropzone{
  background:var(--surface);
  border:1.5px dashed var(--border-2);
  border-radius:var(--r-md);
  cursor:pointer;outline:none;
  transition:border-color .2s, background .2s;
  min-height:140px;
  display:flex;align-items:center;justify-content:center;
  padding:1.25rem;
}
.dropzone:hover,
.dropzone:focus-visible,
.dropzone.drag-over{
  border-color:var(--text-1);
  background:var(--bg-2);
}
.dropzone.has-file{border-style:solid;background:var(--bg-2)}

.dz-default{
  display:flex;align-items:center;gap:1.25rem;
}
.dz-icon{
  width:44px;height:44px;flex-shrink:0;
  background:var(--bg-2);
  border:1px solid var(--border);
  border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.2rem;color:var(--text-1);
}
.dz-title{
  font-size:1rem;font-weight:600;letter-spacing:-.015em;color:var(--text-1);
}
.dz-sub{font-size:.85rem;color:var(--text-2);margin-top:.15rem}
.dz-link{
  color:var(--text-1);font-weight:600;text-decoration:underline;
  text-underline-offset:3px;text-decoration-thickness:1.5px;cursor:pointer;
}

.dz-preview{
  display:flex;align-items:center;gap:1rem;width:100%;
}
.dz-pv-thumb{flex-shrink:0}
.dz-pv-thumb img{
  width:64px;height:64px;object-fit:cover;border-radius:10px;
  border:1px solid var(--border);display:block;
}
.dz-pv-thumb .dz-pv-icon{font-size:2.5rem;line-height:1}
.dz-pv-info{flex:1;min-width:0}
.dz-pv-name{
  font-size:.9rem;font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dz-pv-meta{font-size:.76rem;color:var(--text-2);margin-top:.1rem}

/* Form */
.upload-form{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  padding:1.25rem;
  display:flex;flex-direction:column;
  box-shadow:var(--sh-sm);
}
.form-label{
  font-size:.72rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.08em;
  color:var(--text-2);display:block;margin-bottom:.5rem;
}
.input-wrap{position:relative}
.input-icon{
  position:absolute;left:.85rem;top:50%;transform:translateY(-50%);
  color:var(--text-3);font-size:.9rem;pointer-events:none;
}
.nx-input{
  width:100%;background:var(--bg);border:1px solid var(--border-2);
  border-radius:var(--r-sm);
  color:var(--text-1);font:500 .88rem 'Inter',sans-serif;
  padding:.65rem .85rem .65rem 2.25rem;outline:none;
  transition:border-color .15s,box-shadow .15s;
}
.nx-input::placeholder{color:var(--text-3)}
.nx-input:focus{
  border-color:var(--text-1);
  box-shadow:0 0 0 3px rgba(24,24,27,.05);
  background:var(--surface);
}

/* Progress */
.progress-bar{
  height:3px;background:var(--border);border-radius:3px;overflow:hidden;
  margin-top:.85rem;
}
.progress-bar-fill{
  height:100%;background:var(--primary);border-radius:3px;
  animation:indeterminate 1.4s infinite;
}
@keyframes indeterminate{
  0%{width:0;margin-left:0}
  50%{width:60%;margin-left:20%}
  100%{width:0;margin-left:100%}
}

/* ──────────────────────────────────────────────────────────────────────────
   Filter pills
   ─────────────────────────────────────────────────────────────────────── */
.filter-pills{
  display:inline-flex;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:99px;padding:3px;
  box-shadow:var(--sh-sm);
}
.pill{
  background:transparent;border:none;
  color:var(--text-2);
  font:500 .8rem 'Inter',sans-serif;
  padding:.45rem 1rem;border-radius:99px;
  cursor:pointer;white-space:nowrap;
  transition:background .15s,color .15s;
}
.pill:hover{color:var(--text-1)}
.pill.active{
  background:var(--primary);color:var(--primary-fg);
}

/* ──────────────────────────────────────────────────────────────────────────
   Gallery
   ─────────────────────────────────────────────────────────────────────── */
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:.75rem;
}

.asset-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  overflow:hidden;
  transition:transform .25s,box-shadow .25s,border-color .25s;
  position:relative;
  box-shadow:var(--sh-sm);
}
.asset-card:hover{
  transform:translateY(-3px);
  box-shadow:var(--sh-lg);
  border-color:var(--border-2);
}

/* Media area */
.card-media{
  position:relative;padding-top:75%;
  background:var(--bg-2);overflow:hidden;
}
.card-media img,.card-media video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;transition:transform .5s ease;
}
.asset-card:hover .card-media img{transform:scale(1.05)}

.card-placeholder{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-size:2.5rem;
  background:linear-gradient(135deg,#f4f4ee,#ebe9e2);
}

/* Hover overlay */
.card-overlay{
  position:absolute;inset:0;
  background:linear-gradient(to top, rgba(24,24,27,.78) 0%, rgba(24,24,27,0) 60%);
  display:flex;align-items:flex-end;justify-content:flex-end;gap:.4rem;
  padding:.85rem;opacity:0;transition:opacity .2s;
}
.asset-card:hover .card-overlay{opacity:1}

.co-btn{
  background:rgba(255,255,255,.95);backdrop-filter:blur(8px);
  border:none;border-radius:7px;
  color:var(--text-1);
  font:600 .73rem 'Inter',sans-serif;
  padding:.4rem .7rem;cursor:pointer;
  display:inline-flex;align-items:center;gap:.3rem;
  transition:background .15s,transform .1s;
}
.co-btn:hover{background:#fff}
.co-btn:active{transform:scale(.96)}
.co-btn.del{background:rgba(220,38,38,.92);color:#fff}
.co-btn.del:hover{background:var(--danger)}

/* Type pill */
.type-pill{
  position:absolute;top:.65rem;left:.65rem;
  font-size:.62rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  padding:3px 8px;border-radius:5px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(8px);
  color:var(--text-1);
  pointer-events:none;
}
.tp-video  {background:rgba(220,38,38,.92);color:#fff}
.tp-audio  {background:rgba(21,128,61,.92);color:#fff}
.tp-pdf    {background:rgba(217,119,6,.92);color:#fff}
.tp-doc    {background:rgba(37,99,235,.92);color:#fff}
.tp-sheet  {background:rgba(5,150,105,.92);color:#fff}
.tp-ppt    {background:rgba(234,88,12,.92);color:#fff}
.tp-text   {background:rgba(100,116,139,.92);color:#fff}
.tp-archive{background:rgba(124,58,237,.92);color:#fff}
.tp-3d     {background:rgba(6,182,212,.92);color:#fff}

/* Play icon overlay for video/audio cards */
.media-play-icon{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:2.8rem;
  text-shadow:0 2px 12px rgba(0,0,0,.55);
  pointer-events:none;opacity:.85;transition:opacity .2s;
}
.asset-card:hover .media-play-icon{opacity:1}

/* Audio card background */
.audio-bg{background:linear-gradient(135deg,#dcfce7,#bbf7d0)}
.audio-bg i{color:#15803d}

/* Card info */
.card-info{
  padding:.75rem .9rem .85rem;
}
.card-name{
  font-size:.82rem;font-weight:600;letter-spacing:-.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin-bottom:.2rem;
}
.card-user{
  font-size:.72rem;color:var(--text-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  display:flex;align-items:center;gap:.25rem;
}

/* ──────────────────────────────────────────────────────────────────────────
   Skeleton
   ─────────────────────────────────────────────────────────────────────── */
.skel{
  background:linear-gradient(90deg,#f0eee6 25%,#e8e6dd 50%,#f0eee6 75%);
  background-size:200% 100%;
  animation:sh 1.5s infinite;
  border-radius:6px;
}
@keyframes sh{to{background-position:-200% 0}}

/* ──────────────────────────────────────────────────────────────────────────
   Modals
   ─────────────────────────────────────────────────────────────────────── */
.overlay{
  position:fixed;inset:0;background:rgba(24,24,27,.45);
  backdrop-filter:blur(4px);z-index:9000;
  display:flex;align-items:center;justify-content:center;
  animation:fadeIn .15s ease;padding:1rem;
}
.overlay.hidden{display:none}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

.modal-card{
  background:var(--surface);border-radius:var(--r-lg);
  border:1px solid var(--border);box-shadow:var(--sh-lg);
  width:480px;max-width:100%;
  animation:modalIn .2s ease;
}
.modal-card.sm{width:380px}
@keyframes modalIn{
  from{opacity:0;transform:scale(.95) translateY(8px)}
  to{opacity:1;transform:none}
}

.modal-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:1.15rem 1.5rem;
  border-bottom:1px solid var(--border);
}
.modal-head h3{
  font-size:.95rem;font-weight:700;letter-spacing:-.01em;
}
.modal-body{padding:1.5rem}
.modal-foot{
  padding:1rem 1.5rem;border-top:1px solid var(--border);
  display:flex;align-items:center;justify-content:flex-end;gap:.5rem;
}
.modal-foot.center{justify-content:center}

/* Delete modal */
.del-body{
  padding:2rem 1.5rem 1.25rem;text-align:center;
}
.del-icon{
  width:60px;height:60px;border-radius:50%;
  background:#fef2f2;color:var(--danger);
  display:flex;align-items:center;justify-content:center;
  font-size:1.6rem;margin:0 auto 1rem;
}
.del-body h3{
  font-size:1.05rem;font-weight:700;letter-spacing:-.015em;
  margin-bottom:.4rem;
}
.del-sub{font-size:.85rem;color:var(--text-1);margin-bottom:.5rem;font-weight:500}
.del-warn{font-size:.78rem;color:var(--text-2)}

/* ──────────────────────────────────────────────────────────────────────────
   Lightbox
   ─────────────────────────────────────────────────────────────────────── */
.lightbox{
  position:fixed;inset:0;background:rgba(24,24,27,.94);
  z-index:10000;display:flex;align-items:center;justify-content:center;
  cursor:zoom-out;animation:fadeIn .15s ease;
}
.lightbox.hidden{display:none}
.lb-media.hidden{display:none}
.lb-audio-wrap.hidden{display:none}
.lightbox img{
  max-width:92vw;max-height:90vh;object-fit:contain;
  border-radius:8px;cursor:default;
  box-shadow:0 40px 80px rgba(0,0,0,.8);
}
.lb-video{
  max-width:90vw;max-height:85vh;
  border-radius:8px;cursor:default;
  box-shadow:0 40px 80px rgba(0,0,0,.8);
}
.lb-audio-wrap{
  display:flex;flex-direction:column;align-items:center;gap:1.5rem;
  background:rgba(255,255,255,.08);backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,.15);border-radius:20px;
  padding:3rem 3.5rem;cursor:default;
}
.lb-audio-icon{
  width:80px;height:80px;border-radius:50%;
  background:rgba(21,128,61,.3);
  display:flex;align-items:center;justify-content:center;
  font-size:2rem;color:#86efac;
}
.lb-audio-name{
  color:#fff;font-size:.9rem;font-weight:600;
  max-width:320px;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.lb-audio-wrap audio{width:320px}
.lb-close{
  position:fixed;top:1.5rem;right:1.5rem;
  width:42px;height:42px;border-radius:50%;
  background:rgba(255,255,255,.12);backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.18);color:#fff;
  font-size:1.05rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s;z-index:10001;
}
.lb-close:hover{background:rgba(255,255,255,.2)}

/* ──────────────────────────────────────────────────────────────────────────
   Toasts
   ─────────────────────────────────────────────────────────────────────── */
.toast-stack{
  position:fixed;bottom:1.5rem;right:1.5rem;
  display:flex;flex-direction:column;gap:.5rem;
  z-index:10002;
}
.nx-toast{
  display:flex;align-items:center;gap:.65rem;
  background:var(--text-1);color:#fafaf7;
  border-radius:10px;
  padding:.7rem 1rem;min-width:240px;
  font-size:.84rem;font-weight:500;
  box-shadow:var(--sh-md);
  animation:slideUp .25s ease;
}
@keyframes slideUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.toast-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:#84cc16}
.nx-toast.danger .toast-dot{background:#fb7185}
.nx-toast.info   .toast-dot{background:#60a5fa}

/* ──────────────────────────────────────────────────────────────────────────
   Empty state
   ─────────────────────────────────────────────────────────────────────── */
.empty-state{
  text-align:center;padding:4rem 1rem;grid-column:1/-1;
}
.empty-icon{
  width:64px;height:64px;border-radius:16px;
  border:1px solid var(--border);background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  font-size:1.75rem;color:var(--text-3);
  margin:0 auto 1rem;
}
.empty-title{
  font-size:.95rem;font-weight:600;letter-spacing:-.01em;
  margin-bottom:.3rem;
}
.empty-sub{font-size:.82rem;color:var(--text-2)}

/* ──────────────────────────────────────────────────────────────────────────
   Footer
   ─────────────────────────────────────────────────────────────────────── */
.page-footer{
  max-width:var(--max-w);margin:1.5rem auto 0;
  padding:1.25rem 1.75rem 2rem;
  display:flex;align-items:center;gap:.65rem;
  font-size:.78rem;color:var(--text-3);
  border-top:1px solid var(--border);
}
.page-footer .dot{font-weight:700;color:var(--text-3)}

/* ──────────────────────────────────────────────────────────────────────────
   Responsive
   ─────────────────────────────────────────────────────────────────────── */
@media(max-width:600px){
  .nav-inner{padding:.75rem 1rem}
  .page{padding:2rem 1rem 2rem}
  .search-box input{width:140px;padding-right:.85rem}
  .search-box kbd{display:none}
  .stats{flex-wrap:wrap}
  .stat-divider{display:none}
  .stat{flex:1;min-width:30%}
  .hero-title{font-size:2.25rem}
}
