/* ======================================================================= File: static/css/bookcard.css Purpose: Styling voor registered book cards: - status kleuren - badges - start/abort/statuscheck - progress bars ======================================================================= */ /* ----------------------------------------------------------------------- GRID WRAPPER ----------------------------------------------------------------------- */ .registered-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 20px; margin-top: 15px; } /* ----------------------------------------------------------------------- BOOK CARD BASE ----------------------------------------------------------------------- */ .book-card { position: relative; display: grid; grid-template-columns: 90px auto; gap: 15px; padding: 15px; background: #fff; border-radius: 10px; border: 1px solid #e5e5e5; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); transition: border-color 0.25s ease, box-shadow 0.25s ease; } /* ----------------------------------------------------------------------- STATUS COLORS (BOOK CARD BORDER) ----------------------------------------------------------------------- */ /* Downloading / actief bezig */ .book-card.downloading { border-color: #ff9500; box-shadow: 0 0 6px rgba(255, 149, 0, 0.35); } /* Audio fase */ .book-card.audio { border-color: #ffca28; box-shadow: 0 0 6px rgba(255, 202, 40, 0.35); } /* Volledig klaar */ .book-card.done { border: 2px solid #4caf50; box-shadow: 0 0 6px rgba(76, 175, 80, 0.35); } /* Afgebroken */ .book-card.aborted { border-color: #ff3b30; box-shadow: 0 0 6px rgba(255, 59, 48, 0.35); } /* ----------------------------------------------------------------------- COVER ----------------------------------------------------------------------- */ .book-cover { width: 90px; } .book-img { width: 90px; height: 130px; object-fit: cover; border-radius: 4px; background: #f4f4f4; } .placeholder { display: flex; justify-content: center; align-items: center; color: #777; font-size: 12px; } /* ----------------------------------------------------------------------- META ----------------------------------------------------------------------- */ .book-meta { display: flex; flex-direction: column; justify-content: space-between; } .book-title { font-size: 16px; font-weight: bold; } .book-author { font-size: 14px; color: #444; margin-bottom: 6px; } .book-created { font-size: 12px; color: #666; } /* ----------------------------------------------------------------------- ACTION BUTTONS ----------------------------------------------------------------------- */ .book-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 10px; } .icon-btn { width: 34px; height: 34px; border: none; border-radius: 8px; display: flex; justify-content: center; align-items: center; font-size: 16px; color: #fff; cursor: pointer; transition: background 0.15s ease, transform 0.1s ease; } /* Start */ .icon-start { background: #2d8a3d; } .icon-start:hover { background: #226c30; transform: scale(1.05); } .icon-start:disabled { background: #9bbb9f; cursor: not-allowed; opacity: 0.5; } /* Abort */ .icon-abort { background: #c62828; } .icon-abort:hover { background: #a31f1f; transform: scale(1.05); } .icon-abort:disabled { background: #d8a0a0; cursor: not-allowed; opacity: 0.5; } /* Hide */ .hide-form { position: absolute; top: 6px; right: 6px; } .icon-hide { background: #777; } .icon-hide:hover { background: #555; } /* Statuscheck */ .statuscheck-btn { background-color: #444; color: #fff; border: 1px solid #666; margin-left: 4px; padding: 4px 8px; border-radius: 6px; font-size: 12px; cursor: pointer; } .statuscheck-btn:hover { background-color: #333; } /* ----------------------------------------------------------------------- PROGRESS (FULL WIDTH) ----------------------------------------------------------------------- */ .book-progress { grid-column: 1 / -1; margin-top: 12px; padding: 10px 12px; background: #f6f6f6; border-radius: 8px; } .progress-row { margin-bottom: 4px; } .progress-label { font-size: 12px; margin-bottom: 4px; color: #444; } /* BAR */ .progressbar { position: relative; width: 100%; height: 14px; background: #ddd; border-radius: 7px; overflow: hidden; } .progressbar-fill { height: 100%; transition: width 0.4s ease; } /* Download */ .progressbar-fill.download { background: #2196f3; } /* Audio */ .progressbar-fill.audio { background: #4caf50; } /* TEXT IN BAR */ .progressbar-text { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); pointer-events: none; } /* ----------------------------------------------------------------------- STATUS BADGE ----------------------------------------------------------------------- */ .status-badge { display: inline-block; margin-bottom: 6px; padding: 2px 8px; font-size: 11px; font-weight: 600; border-radius: 10px; text-transform: uppercase; letter-spacing: 0.5px; cursor: default; } /* DONE */ .status-badge.status-done { background-color: #e6f4ea; color: #2e7d32; border: 1px solid #4caf50; } /* AUDIO */ .status-badge.status-audio { background-color: #fff8e1; color: #8d6e00; border: 1px solid #ffca28; } /* DOWNLOADING */ .status-badge.status-downloading { background-color: #e3f2fd; color: #1565c0; border: 1px solid #42a5f5; } /* Statuscheck */ .icon-statuscheck { background: #444; } .icon-statuscheck:hover { background: #333; transform: scale(1.05); }