:root{
  --bg:#0b1020; --panel:#111833; --muted:#9aa4c7; --text:#e7ecff; --brand:#6aa7ff; --accent:#6bffa8; --warn:#ff8a8a;
  --ring: 0 0 0 2px rgba(106,167,255,.35);
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:Inter,system-ui,Segoe UI,Roboto,Arial,sans-serif;background:linear-gradient(180deg,#0b1020 0%,#0f1430 100%);color:var(--text)}
.hidden{display:none!important}

.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:rgba(10,13,28,.7);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.06)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700}
.brand span{letter-spacing:.3px}
.top-actions{display:flex;align-items:center;gap:10px}
.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;background:rgba(106,167,255,.15);color:#cfe1ff;font-size:12px}

.layout{display:grid;grid-template-columns:300px 1fr;gap:18px;padding:18px;max-width:1200px;margin:0 auto}
.sidebar{background:var(--panel);padding:16px;border-radius:16px;border:1px solid rgba(255,255,255,.06)}
.content{display:flex;flex-direction:column;gap:18px}
.section{background:var(--panel);padding:16px;border-radius:16px;border:1px solid rgba(255,255,255,.06)}
.section-title{font-weight:600;margin-bottom:12px;opacity:.9}

.input{width:100%;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#0d1430;color:var(--text);outline:none}
.input:focus{box-shadow:var(--ring);border-color:rgba(106,167,255,.45)}

button, .link-btn{cursor:pointer;border:0;border-radius:12px;padding:10px 14px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.primary{background:linear-gradient(135deg,var(--brand),#74ffd1);color:#06122a}
.ghost{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,.12)}
.w-full{width:100%}
button:disabled{opacity:.6;cursor:not-allowed}
.upload{display:inline-flex;justify-content:center;align-items:center;padding:8px 10px;border:1px dashed rgba(255,255,255,.2);border-radius:12px;cursor:pointer}

.toolbar{display:flex;align-items:center;justify-content:space-between}
.count{opacity:.85}

.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.card{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:16px;overflow:hidden;display:flex;flex-direction:column}
.card .cover{width:100%;height:160px;background:#0a132e;display:flex;align-items:center;justify-content:center;overflow:hidden}
.card .cover img{width:100%;height:100%;object-fit:cover;filter:saturate(1.05)}
.card .body{padding:14px;display:flex;flex-direction:column;gap:6px}
.card .title{font-weight:700}
.card .meta{color:var(--muted);font-size:14px}
.card .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.tag{background:rgba(255,255,255,.06);padding:2px 8px;border-radius:999px;font-size:12px;color:#cbd7ff}
.card .footer{display:flex;gap:8px;padding:12px 14px 16px; flex-wrap: wrap;}
.card .footer button{
  flex: 1 1 130px;         /* let buttons shrink and wrap nicely */
  min-width: 0;            /* prevent overflow from long labels */
}
.activity{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.activity li{display:flex;justify-content:space-between;align-items:center;background:#0c1533;border:1px solid rgba(255,255,255,.06);padding:10px;border-radius:12px}
.activity .who{color:#cfe1ff}
.activity .what{color:#a0b3ff}
.activity .when{color:#87c1ff;font-size:12px}

.reco{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px}

.modal{border:0;padding:0;background:transparent}
.modal::backdrop{background:rgba(0,0,0,.55)}
.modal-card{width:min(720px,92vw);background:#0c1430;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:16px;color:var(--text)}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.modal-header h3{margin:0;font-size:18px}
.tabs{display:flex;gap:6px;margin:8px 0 12px}
.tab{padding:8px 10px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text)}
.tab.active{border-color:rgba(255,255,255,.16);background:#0b1230}
.tab-panel{display:flex;flex-direction:column;gap:10px}
.row{display:flex;gap:10px}
.row.end{justify-content:flex-end}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hint{opacity:.7;font-size:12px;margin-top:8px}

.user-area{display:flex;align-items:center;gap:10px}

/* ===== Media Modal Big & Visible ===== */
#pdfModal .modal-card--pdf{ width:95vw; height:95vh; display:flex; flex-direction:column; gap:10px; }
#pdfModal .modal-header--sticky{ position:sticky; top:0; background:#0c1430; z-index:2; padding-bottom:10px; margin-bottom:0; border-bottom:1px solid rgba(255,255,255,.08); }
.player-area{ flex:1; display:flex; align-items:stretch; }
.player-area iframe, .player-area video, .player-area audio{ width:100%; height:100%; border:1px solid rgba(255,255,255,.1); border-radius:12px; background:#0a132e; }

@media (max-width: 980px){
  .layout{grid-template-columns:1fr}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 640px){
  .cards{grid-template-columns:1fr}
}

/* Make grid less cramped so 3 buttons fit more often */
@media (max-width: 1080px){
  .cards{ grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 560px){
  .cards{ grid-template-columns: 1fr; }
}

/* ===== Responsive Enhancements (drop-in, non-breaking) ===== */

/* Fluid base type (prevents iOS zoom on inputs) */
html { font-size: clamp(14px, 0.9vw + 12px, 18px); }

/* Respect safe areas (iPhone notch) */
.topbar { padding-top: calc(14px + env(safe-area-inset-top, 0px)); }
.layout { padding-left: calc(18px + env(safe-area-inset-left, 0px));
          padding-right: calc(18px + env(safe-area-inset-right, 0px)); }

/* Make action buttons wrap neatly on small screens */
.top-actions { flex-wrap: wrap; gap: 8px; }

/* Touch-friendly targets */
button, .link-btn, .input, select { min-height: 40px; }

/* Cards: flexible cover height & better object-fit on tiny screens */
.card .cover { aspect-ratio: 16 / 9; height: auto; }
.card .cover img { object-fit: cover; }

/* Dialogs: avoid overflow on short viewports */
.modal-card { max-height: 92vh; overflow: auto; }

/* Big PDF/Media reader keeps healthy height on mobile */
.player-area { min-height: 60vh; }
@media (max-width: 540px){
  .player-area { min-height: 58vh; }
}

/* Admin form grid stacks on small screens */
@media (max-width: 820px){
  .grid2 { grid-template-columns: 1fr; }
}

/* Widen for desktops & tighten for tablets/phones without changing your 980/640 breakpoints */
@media (min-width: 1280px){
  .layout { max-width: 1320px; grid-template-columns: 300px 1fr; }
  .cards { grid-template-columns: repeat(4, minmax(0,1fr)); }
}
@media (min-width: 1600px){
  .layout { max-width: 1500px; }
  .cards { grid-template-columns: repeat(5, minmax(0,1fr)); }
}

/* Smooth shrink step between your 980 and 640 rules */
@media (max-width: 820px){
  .layout { grid-template-columns: 1fr; gap: 16px; }
  .cards  { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

/* Ultra small phones */
@media (max-width: 420px){
  .cards { grid-template-columns: 1fr; }
  .brand span { display: none; } /* keep logo, save space */
}

/* Inputs shouldn’t overflow narrow sidebars */
.filters .input { width: 100%; }

/* Reduce motion if user prefers */
@media (prefers-reduced-motion: reduce){
  * { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* Keep your existing breakpoints intact (980 / 640 in original file). These additions only fill the gaps. */

/* === PWA & Activity add-ons (non-breaking) === */
#pwaInstallWrap .btn { cursor: pointer; box-shadow: 0 6px 18px rgba(0,0,0,.12); }
#pwaInstallWrap .btn:active { transform: translateY(1px); }

.activity-list { list-style: none; padding-left: 0; margin: 0; }
.activity-list li { padding: 8px 10px; border: 1px solid rgba(0,0,0,0.06); border-radius: 8px; margin-bottom: 8px; }

.activity-history .day {
  border: 1px solid rgba(0,0,0,0.06);
  border-radius: 10px; padding: 10px; margin-bottom: 10px;
}
.activity-history .day h4 { margin: 0 0 6px 0; font-size: 1rem; opacity: .8; }
.activity-history .day ul { list-style: none; padding-left: 0; margin: 0; }
.activity-history .day li { padding: 6px 8px; border-radius: 6px; background: rgba(0,0,0,.03); margin-bottom: 6px; }

/* === Card footer layout: Primary on first row, Download & Edit on second === */
/* Make footer sit at the bottom consistently */
.card { display: flex; flex-direction: column; }            /* already true but safe */
.card .body { flex: 1; }                                     /* pushes footer down */
.card .footer { margin-top: auto; }                          /* stick to bottom */

/* Grid layout for the 3 buttons */
.card .footer{
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-areas:
    "primary primary"
    "download edit";
  gap: 8px;
  padding: 12px 14px 16px;                                   /* keep your padding */
}

/* Map each button into a grid area */
.card .footer .act-open      { grid-area: primary; }
.card .footer .act-download  { grid-area: download; }
.card .footer .act-edit      { grid-area: edit; }

/* Center the labels inside every button */
.card .footer button{
  display: inline-flex;                                      /* you already use this */
  align-items: center;
  justify-content: center;                                   /* <-- center text */
  min-width: 0;                                              /* prevent overflow */
  white-space: nowrap;
}

/* If Edit is hidden/absent (non-admin), make Download span full width on row 2 */
.card .footer:has(.act-download):not(:has(.act-edit)){
  grid-template-columns: 1fr;
  grid-template-areas:
    "primary"
    "download";
}

/* Small screens — keep the same 2-row structure cleanly */
@media (max-width: 560px){
  .card .footer{
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "primary primary"
      "download edit";
  }
}