/* ── Portal Cliente — SlothSphere ────────────────────────────────────────── */
@import url('/assets/css/site.css');

:root {
  --sidebar-w: 230px;
  --topbar-h:  60px;
}

/* ── Shell ────────────────────────────────────────────────────────────────── */
body { overflow: hidden; }

#portal-app { display: flex; height: 100vh; }

/* ── Sidebar ──────────────────────────────────────────────────────────────── */
#portal-sidebar {
  width: var(--sidebar-w); flex-shrink: 0;
  background: var(--surface); border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
  transition: margin-left .2s;
}
.sidebar-logo {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--border);
  font-size: 1rem; font-weight: 800; color: var(--text);
}
.sidebar-logo button { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 1rem; }

#portal-nav { flex: 1; padding: .75rem 0; overflow-y: auto; }
.pnav-item {
  display: flex; align-items: center; gap: .75rem;
  padding: .65rem 1.5rem; color: var(--text-muted);
  font-size: .88rem; cursor: pointer; transition: all .12s;
  border-left: 2px solid transparent;
  text-decoration: none;
}
.pnav-item:hover  { background: rgba(255,255,255,.04); color: var(--text); }
.pnav-item.active { color: var(--text); background: rgba(255,255,255,.06); border-left-color: var(--warm); }
.pnav-icon { font-size: 1rem; width: 20px; text-align: center; }

.sidebar-footer {
  padding: 1rem 1.5rem; border-top: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
}
.sidebar-user { font-size: .8rem; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Main ─────────────────────────────────────────────────────────────────── */
#portal-main { flex: 1; display: flex; flex-direction: column; overflow: hidden; }

#portal-topbar {
  height: var(--topbar-h); background: var(--surface);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: 1rem;
  padding: 0 1.75rem; flex-shrink: 0;
}
#portal-topbar h2  { flex: 1; font-size: .95rem; font-weight: 600; }
.topbar-menu-btn   { background: none; border: none; cursor: pointer; color: var(--text-muted); font-size: 1.3rem; display: none; }

#portal-content { flex: 1; overflow-y: auto; padding: 1.75rem; }

/* ── Views ────────────────────────────────────────────────────────────────── */
.pview { animation: fadeUp .15s ease; }
@keyframes fadeUp { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }

/* ── Summary cards ────────────────────────────────────────────────────────── */
.summary-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 1rem;
  margin-bottom: 2rem;
}
.summary-card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1.25rem 1rem;
}
.summary-card .val { font-size: 2rem; font-weight: 800; color: var(--text); }
.summary-card .lbl { font-size: .75rem; color: var(--text-muted); margin-top: .25rem; text-transform: uppercase; letter-spacing: .07em; }

/* ── Portal table ─────────────────────────────────────────────────────────── */
.ptable-wrap { overflow-x: auto; }
.ptable {
  width: 100%; border-collapse: collapse;
  background: var(--surface); border-radius: var(--radius);
  border: 1px solid var(--border); overflow: hidden;
}
.ptable th {
  background: var(--surface2); text-align: left;
  padding: .65rem 1rem; font-size: .75rem;
  color: var(--text-dim); font-weight: 600;
  text-transform: uppercase; letter-spacing: .06em;
  border-bottom: 1px solid var(--border);
}
.ptable td {
  padding: .75rem 1rem; border-bottom: 1px solid var(--border);
  font-size: .88rem; vertical-align: middle;
}
.ptable tr:last-child td { border-bottom: none; }
.ptable tr:hover td { background: rgba(255,255,255,.02); }

/* ── Status badges ────────────────────────────────────────────────────────── */
.status {
  display: inline-block; padding: .2rem .65rem;
  border-radius: 20px; font-size: .72rem; font-weight: 600;
}
.s-pending     { background: rgba(245,166,35,.12);  color: #f5a623; }
.s-in_progress { background: rgba(191,185,184,.12); color: var(--warm); }
.s-completed   { background: rgba(62,207,142,.12);  color: #3ecf8e; }
.s-cancelled   { background: rgba(224,82,82,.12);   color: #e05252; }
.s-sent        { background: rgba(191,185,184,.12); color: var(--warm); }
.s-paid        { background: rgba(62,207,142,.12);  color: #3ecf8e; }
.s-overdue     { background: rgba(224,82,82,.12);   color: #e05252; }
.s-draft       { background: rgba(87,88,89,.18);    color: var(--text-dim); }

/* ── Service cards (portal) ───────────────────────────────────────────────── */
.portal-services-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1.25rem;
}
.portal-service-card h3 { margin-bottom: .5rem; font-size: 1rem; }
.portal-service-card p  { font-size: .85rem; }
.pservice-price {
  font-size: 1.3rem; font-weight: 800; margin-top: 1rem;
  padding-top: 1rem; border-top: 1px solid var(--border);
  color: var(--text);
}

/* ── Empty state ──────────────────────────────────────────────────────────── */
.empty-state {
  text-align: center; padding: 4rem 1rem;
  color: var(--text-muted);
}
.empty-state .icon { font-size: 3rem; margin-bottom: 1rem; }

/* ── Responsive ───────────────────────────────────────────────────────────── */
/* ── Project cards with progress bar ─────────────────────────────────────── */
.proj-card          { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.1rem 1.25rem; margin-bottom: .85rem; }
.proj-card-head     { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .35rem; }
.proj-card-title    { font-size: 1rem; font-weight: 700; }
.proj-card-desc     { font-size: .82rem; color: var(--text-muted); margin-bottom: .75rem; line-height: 1.45; }
.proj-progress-wrap { margin: .65rem 0 .5rem; }
.proj-progress-track{ height: 8px; background: var(--border); border-radius: 4px; overflow: hidden; margin-bottom: .35rem; }
.proj-progress-fill { height: 100%; border-radius: 4px; transition: width .6s ease; }
.proj-progress-label{ font-size: .75rem; color: var(--text-muted); font-weight: 600; }
.proj-card-foot     { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: .5rem; font-size: .78rem; color: var(--text-dim); }

@media (max-width: 680px) {
  #portal-sidebar { position: fixed; z-index: 500; height: 100vh; }
  #portal-sidebar.collapsed { margin-left: calc(-1 * var(--sidebar-w)); }
  .topbar-menu-btn { display: block; }
  #portal-content  { padding: 1.25rem; }
}
