/* ============================================
   NOIR & CO. v3 — App (login / premium / admin)
   ============================================ */

.app-header { display:flex; align-items:center; justify-content:space-between; padding:1.5rem 3rem; border-bottom:var(--border-hairline); }
.app-header__right { display:flex; align-items:center; gap:1.5rem; }
.app-header__user { font-family:var(--font-mono); font-size:0.78rem; color:var(--color-ivory-dim); }
.app-header__user strong { color:var(--color-gold-bright); font-weight:500; }

/* ============================================
   LOGIN — Assinante (login.html)
   ============================================ */

.login-screen {
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:2rem;
  background:radial-gradient(ellipse at 50% 0%, rgba(60,45,20,0.3) 0%, transparent 60%), var(--color-black);
}
.login-card { width:100%; max-width:420px; border:var(--border-hairline-bright); padding:3rem; background:var(--color-black-soft); }
.login-card__brand { display:flex; justify-content:center; margin-bottom:2.5rem; }
.login-card__title { font-family:var(--font-display); font-size:1.4rem; text-align:center; margin-bottom:0.4rem; }
.login-card__sub   { font-family:var(--font-mono); font-size:0.72rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--color-muted); text-align:center; margin-bottom:2rem; }

.login-form { display:flex; flex-direction:column; gap:1.25rem; }
.login-form .btn { margin-top:0.5rem; }
.login-error { display:none; font-family:var(--font-mono); font-size:0.78rem; color:var(--color-danger); border:1px solid rgba(176,106,90,0.4); background:rgba(176,106,90,0.08); padding:0.75rem 1rem; }
.login-error.is-visible { display:block; }
.login-hint { margin-top:2rem; padding-top:1.5rem; border-top:var(--border-hairline); font-size:0.78rem; color:var(--color-muted); line-height:1.7; }
.login-hint code { font-family:var(--font-mono); color:var(--color-gold); }
.login-back { display:block; text-align:center; margin-top:1.5rem; font-family:var(--font-mono); font-size:0.72rem; color:var(--color-muted); }
.login-back:hover { color:var(--color-gold-bright); }

/* ============================================
   ADMIN ACCESS — Proprietário (admin-access.html)
   Mesma estrutura visual do login, mas SEM
   nenhum link ou referência no site público.
   ============================================ */

.admin-access-screen {
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:2rem;
  background:radial-gradient(ellipse at 50% 100%, rgba(40,30,10,0.4) 0%, transparent 60%), var(--color-black);
}
.admin-access-card { width:100%; max-width:400px; border:var(--border-hairline); padding:3rem; background:var(--color-black-soft); }
.admin-access-card__brand  { display:flex; justify-content:center; margin-bottom:2.5rem; }
.admin-access-card__title  { font-family:var(--font-display); font-size:1.2rem; text-align:center; margin-bottom:0.3rem; color:var(--color-ivory-dim); }
.admin-access-card__sub    { font-family:var(--font-mono); font-size:0.68rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--color-gold-dim); text-align:center; margin-bottom:2rem; }

/* ============================================
   PREMIUM — Área do assinante
   ============================================ */

.premium-shell { min-height:100vh; }
.premium-hero  { padding:3rem 3rem 2rem; border-bottom:var(--border-hairline); }
.premium-hero__eyebrow { margin-bottom:1rem; }
.premium-hero h1 { font-family:var(--font-display); font-size:clamp(2rem,4vw,2.8rem); font-weight:500; }
.premium-hero p  { color:var(--color-ivory-dim); margin-top:0.75rem; max-width:560px; }
.tier-pill { display:inline-flex; align-items:center; gap:0.5rem; padding:0.4rem 0.9rem; border:var(--border-hairline-bright); font-family:var(--font-mono); font-size:0.68rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--color-gold-bright); margin-top:1rem; }

.premium-grid { padding:3rem; display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; }

.piece-card { position:relative; border:var(--border-hairline); background:linear-gradient(160deg, var(--color-charcoal) 0%, var(--color-black-soft) 100%); overflow:hidden; transition:border-color var(--duration-base) var(--ease-out); }
.piece-card:hover { border-color:var(--color-gold-bright); }
.piece-card__visual { aspect-ratio:3/4; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:2.5rem; color:var(--color-gold-dim); position:relative; overflow:hidden; }
.piece-card__body   { padding:1.25rem; border-top:var(--border-hairline); }
.piece-card__title  { font-family:var(--font-display); font-size:1.1rem; margin-bottom:0.35rem; }
.piece-card__tier   { font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--color-gold-dim); }

.piece-card.is-locked .piece-card__visual { filter:blur(6px); opacity:0.5; }
.piece-card__lock { display:none; position:absolute; inset:0; background:rgba(10,8,6,0.55); flex-direction:column; align-items:center; justify-content:center; gap:0.75rem; text-align:center; padding:1rem; }
.piece-card.is-locked .piece-card__lock { display:flex; }
.piece-card__lock-icon { width:28px; height:28px; color:var(--color-gold-bright); }
.piece-card__lock-text { font-family:var(--font-mono); font-size:0.68rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--color-ivory-dim); }

.piece-card.is-clickable { cursor:pointer; }
.piece-card.is-clickable .piece-card__visual { transition:transform var(--duration-base) var(--ease-out); }
.piece-card.is-clickable:hover .piece-card__visual { transform:scale(1.03); }
.piece-card.is-clickable:focus-visible { outline:2px solid var(--color-gold-bright); outline-offset:2px; }

.empty-state { grid-column:1/-1; text-align:center; padding:var(--space-lg) 1rem; color:var(--color-muted); font-family:var(--font-mono); font-size:0.85rem; }

/* ============================================
   LIGHTBOX
   ============================================ */

body.lightbox-open { overflow:hidden; }
.lightbox { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; background:rgba(10,8,6,0.92); backdrop-filter:blur(4px); padding:4rem 2rem; opacity:0; transition:opacity var(--duration-base) var(--ease-out); }
.lightbox.is-visible { display:flex; opacity:1; }
.lightbox__image { max-width:min(90vw,1000px); max-height:82vh; width:auto; height:auto; object-fit:contain; border:var(--border-hairline-bright); background:var(--color-black-soft); transform:scale(0.96); transition:transform var(--duration-base) var(--ease-out); }
.lightbox.is-visible .lightbox__image { transform:scale(1); }
.lightbox__close { position:fixed; top:1.75rem; right:2rem; width:44px; height:44px; display:flex; align-items:center; justify-content:center; background:transparent; border:var(--border-hairline-bright); color:var(--color-ivory); font-size:1.1rem; line-height:1; border-radius:50%; transition:all var(--duration-base) var(--ease-out); }
.lightbox__close:hover { border-color:var(--color-gold-bright); color:var(--color-gold-bright); }
.lightbox__caption { position:fixed; bottom:2rem; left:0; right:0; text-align:center; font-family:var(--font-display); font-size:1.2rem; color:var(--color-ivory-dim); }

/* ============================================
   ADMIN — Painel do Proprietário
   ============================================ */

.admin-shell { display:grid; grid-template-columns:240px 1fr; min-height:100vh; }
.admin-sidebar { border-right:var(--border-hairline); padding:2rem 1.5rem; display:flex; flex-direction:column; gap:0.5rem; }
.admin-sidebar__brand { margin-bottom:2.5rem; padding:0 0.25rem; }
.admin-nav-btn { display:flex; align-items:center; gap:0.75rem; padding:0.85rem 1rem; background:none; border:none; border-left:2px solid transparent; color:var(--color-ivory-dim); font-family:var(--font-mono); font-size:0.78rem; text-transform:uppercase; letter-spacing:0.05em; text-align:left; transition:all var(--duration-base) var(--ease-out); }
.admin-nav-btn:hover { color:var(--color-ivory); background:rgba(201,164,92,0.06); }
.admin-nav-btn.is-active { color:var(--color-gold-bright); border-left-color:var(--color-gold); background:rgba(201,164,92,0.08); }

.admin-main { padding:2.5rem 3rem; overflow-y:auto; }
.admin-panel { display:none; }
.admin-panel.is-active { display:block; }
.admin-panel__header { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:2rem; flex-wrap:wrap; gap:1rem; }
.admin-panel__header h2 { font-family:var(--font-display); font-size:1.9rem; font-weight:500; }
.admin-panel__header p  { color:var(--color-muted); font-size:0.9rem; margin-top:0.35rem; }

.status-control { border:var(--border-hairline); padding:2rem; margin-bottom:2rem; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:1.5rem; }
.status-control__info h3 { font-family:var(--font-display); font-size:1.3rem; margin-bottom:0.4rem; }
.status-control__info p  { color:var(--color-muted); font-size:0.88rem; }
.status-toggle { display:flex; border:var(--border-hairline-bright); }
.status-toggle__btn { padding:0.75rem 1.5rem; background:none; border:none; font-family:var(--font-mono); font-size:0.72rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--color-muted); transition:all var(--duration-base) var(--ease-out); }
.status-toggle__btn + .status-toggle__btn { border-left:var(--border-hairline); }
.status-toggle__btn[data-active="true"][data-value="disponivel"]   { background:rgba(122,155,110,0.18); color:var(--color-success); }
.status-toggle__btn[data-active="true"][data-value="indisponivel"] { background:rgba(176,106,90,0.18); color:var(--color-danger); }

.admin-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem; }
.admin-card { border:var(--border-hairline); padding:1.25rem; }
.admin-card__visual { aspect-ratio:4/5; background:linear-gradient(160deg, var(--color-charcoal) 0%, var(--color-black-soft) 100%); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:2rem; color:var(--color-gold-dim); margin-bottom:1rem; overflow:hidden; }
.admin-card__row    { display:flex; align-items:center; justify-content:space-between; gap:0.5rem; margin-bottom:0.5rem; }
.admin-card__title  { font-family:var(--font-display); font-size:1.05rem; }
.admin-card__meta   { font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; color:var(--color-gold-dim); }
.admin-card__actions { display:flex; gap:0.5rem; margin-top:0.75rem; }

.icon-btn { flex:1; padding:0.5rem; background:none; border:var(--border-hairline); color:var(--color-ivory-dim); font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; transition:all var(--duration-base) var(--ease-out); }
.icon-btn:hover { border-color:var(--color-gold-bright); color:var(--color-gold-bright); }
.icon-btn--danger:hover { border-color:var(--color-danger); color:var(--color-danger); }

.add-card { border:1px dashed rgba(201,164,92,0.3); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:0.75rem; min-height:240px; background:none; color:var(--color-muted); font-family:var(--font-mono); font-size:0.75rem; text-transform:uppercase; letter-spacing:0.06em; transition:all var(--duration-base) var(--ease-out); }
.add-card:hover { border-color:var(--color-gold-bright); color:var(--color-gold-bright); }
.add-card__icon { font-size:1.8rem; font-family:var(--font-display); color:var(--color-gold-dim); }

/* --- Tabela assinantes --- */
.subscribers-table { width:100%; border-collapse:collapse; }
.subscribers-table th { text-align:left; font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--color-gold-dim); padding:0.85rem 1rem; border-bottom:var(--border-hairline-bright); }
.subscribers-table td { padding:1rem; border-bottom:var(--border-hairline); font-size:0.9rem; }
.subscribers-table tr:last-child td { border-bottom:none; }
.tier-tag { display:inline-block; padding:0.25rem 0.65rem; font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; border:var(--border-hairline); color:var(--color-ivory-dim); }
.tier-tag[data-tier="signature"] { color:var(--color-gold-bright); border-color:rgba(201,164,92,0.4); }
.subscriber-status { display:inline-flex; align-items:center; gap:0.4rem; font-size:0.82rem; }
.subscriber-status__dot { width:6px; height:6px; border-radius:50%; background:var(--color-success); }
.subscriber-status[data-active="false"] .subscriber-status__dot { background:var(--color-danger); }
.table-actions { display:flex; gap:0.5rem; }

/* --- Modais --- */
.modal-backdrop { position:fixed; inset:0; background:rgba(10,8,6,0.75); display:none; align-items:center; justify-content:center; z-index:500; padding:1.5rem; }
.modal-backdrop.is-visible { display:flex; }
.modal { width:100%; max-width:440px; background:var(--color-black-soft); border:var(--border-hairline-bright); padding:2.25rem; }
.modal h3 { font-family:var(--font-display); font-size:1.4rem; margin-bottom:1.5rem; }
.modal-form { display:flex; flex-direction:column; gap:1.1rem; }
.modal-actions { display:flex; gap:0.75rem; margin-top:0.5rem; }
.modal-actions .btn { flex:1; }

/* --- Upload --- */
.upload-btn { display:flex; align-items:center; gap:0.6rem; width:100%; padding:0.85rem 1rem; background:var(--color-charcoal); border:1px dashed rgba(201,164,92,0.35); color:var(--color-ivory-dim); font-family:var(--font-body); font-size:0.9rem; transition:all var(--duration-base) var(--ease-out); text-align:left; }
.upload-btn:hover { border-color:var(--color-gold-bright); color:var(--color-ivory); }
.upload-btn__icon { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border:1px solid currentColor; border-radius:50%; font-size:0.8rem; flex-shrink:0; }
.upload-hint { display:block; margin-top:0.5rem; font-family:var(--font-mono); font-size:0.7rem; letter-spacing:0.03em; color:var(--color-gold-dim); }
.upload-preview { border:var(--border-hairline); padding:0.75rem; display:flex; justify-content:center; }
.upload-preview img { max-height:160px; max-width:100%; object-fit:contain; }

/* ============================================
   Preview ao vivo do badge de status (admin)
   ============================================ */

.status-preview-wrap {
  margin-top: 1.25rem;
  max-width: 520px;
}

.status-preview-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-gold-dim);
  margin-bottom: 0.6rem;
}

.status-preview {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.55rem 1.1rem;
  border: var(--border-hairline-bright);
  background: rgba(10, 8, 6, 0.6);
  position: relative;
  overflow: hidden;
  width: 100%;
  transition: border-color var(--duration-base) var(--ease-out);
}

/* linha dourada no topo — espelha o badge do site */
.status-preview::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(to right,
    transparent,
    var(--color-gold-bright) 40%,
    var(--color-gold) 60%,
    transparent);
}

.status-preview__dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--color-muted);
  flex-shrink: 0;
  position: relative;
}

.status-preview[data-status="disponivel"] {
  border-color: rgba(122, 155, 110, 0.5);
}
.status-preview[data-status="disponivel"] .status-preview__dot {
  background: var(--color-success);
  box-shadow: 0 0 6px rgba(122, 155, 110, 0.8);
}

.status-preview[data-status="indisponivel"] {
  border-color: rgba(176, 106, 90, 0.5);
}
.status-preview[data-status="indisponivel"] .status-preview__dot {
  background: var(--color-danger);
  box-shadow: 0 0 6px rgba(176, 106, 90, 0.8);
}

.status-preview__word {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 500;
  flex-shrink: 0;
}

.status-preview[data-status="disponivel"]   .status-preview__word { color: var(--color-success); }
.status-preview[data-status="indisponivel"] .status-preview__word { color: var(--color-danger); }

.status-preview__sep {
  color: var(--color-gold-dim);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  flex-shrink: 0;
}

.status-preview__text {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-ivory-dim);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ============================================
   Mensagens — painel admin
   ============================================ */

/* Badge de não lidas no botão do sidebar */
.msg-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  background: var(--color-gold);
  color: var(--color-black);
  font-size: 0.65rem;
  font-weight: 700;
  margin-left: auto;
  line-height: 1;
}

/* Lista de mensagens */
.msg-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.msg-item {
  display: grid;
  grid-template-columns: 8px 1fr auto;
  align-items: center;
  gap: 1.25rem;
  padding: 1.25rem 1rem;
  border-bottom: var(--border-hairline);
  cursor: pointer;
  transition: background var(--duration-base) var(--ease-out);
  position: relative;
}
.msg-item:first-child { border-top: var(--border-hairline); }
.msg-item:hover { background: rgba(201,164,92,0.04); }

/* indicador lateral de não lida */
.msg-item__dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--color-gold-bright);
  flex-shrink: 0;
  justify-self: center;
}
.msg-item.is-read .msg-item__dot { background: transparent; }

.msg-item__body { min-width: 0; }

.msg-item__name {
  font-family: var(--font-display);
  font-size: 1.05rem;
  color: var(--color-ivory);
  margin-bottom: 0.2rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.msg-item.is-read .msg-item__name { color: var(--color-ivory-dim); }

.msg-item__email {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  color: var(--color-muted);
  margin-bottom: 0.35rem;
}

.msg-item__preview {
  font-size: 0.88rem;
  color: var(--color-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.msg-item__date {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  color: var(--color-muted);
  white-space: nowrap;
  text-align: right;
  align-self: start;
  padding-top: 0.2rem;
}

.msg-empty {
  padding: var(--space-lg) 1rem;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 0.85rem;
  color: var(--color-muted);
}

/* Detalhe de mensagem */
.msg-detail { margin-top: 0; }

.msg-detail__back {
  background: none;
  border: none;
  color: var(--color-gold-dim);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 1.75rem;
  padding: 0;
  transition: color var(--duration-base) var(--ease-out);
}
.msg-detail__back:hover { color: var(--color-gold-bright); }

.msg-detail__card {
  border: var(--border-hairline-bright);
  background: var(--color-black-soft);
}

.msg-detail__meta {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-bottom: var(--border-hairline);
}

.msg-detail__field {
  padding: 1.25rem 1.5rem;
  border-right: var(--border-hairline);
}
.msg-detail__field:last-child { border-right: none; }

.msg-detail__label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-gold-dim);
  margin-bottom: 0.5rem;
}

.msg-detail__value {
  font-size: 0.95rem;
  color: var(--color-ivory);
}

.msg-detail__email {
  color: var(--color-gold-bright);
  text-decoration: underline;
  text-underline-offset: 3px;
  font-size: 0.9rem;
}
.msg-detail__email:hover { color: var(--color-gold-bright); }

.msg-detail__body {
  padding: 1.75rem 1.5rem;
  border-bottom: var(--border-hairline);
}

.msg-detail__text {
  margin-top: 0.75rem;
  color: var(--color-ivory-dim);
  line-height: 1.75;
  white-space: pre-wrap;
  font-size: 1rem;
}

.msg-detail__actions {
  padding: 1.25rem 1.5rem;
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}

@media (max-width: 720px) {
  .msg-detail__meta { grid-template-columns: 1fr; }
  .msg-detail__field { border-right: none; border-bottom: var(--border-hairline); }
  .msg-detail__field:last-child { border-bottom: none; }
}

/* --- Responsivo --- */
@media (max-width:1000px) {
  .premium-grid { grid-template-columns:repeat(2,1fr); padding:2rem; }
  .admin-grid   { grid-template-columns:repeat(2,1fr); }
  .admin-shell  { grid-template-columns:1fr; }
  .admin-sidebar { flex-direction:row; overflow-x:auto; border-right:none; border-bottom:var(--border-hairline); }
  .admin-sidebar__brand { display:none; }
  .admin-main { padding:1.5rem; }
}
@media (max-width:600px) {
  .premium-grid { grid-template-columns:1fr; }
  .admin-grid   { grid-template-columns:1fr; }
  .app-header   { padding:1.25rem 1.5rem; }
  .premium-hero { padding:2rem 1.5rem; }
  .lightbox { padding:2rem 1rem; }
  .lightbox__close { top:1rem; right:1rem; width:38px; height:38px; }
  .lightbox__caption { bottom:1.25rem; font-size:1rem; }
}
