/* Frontend styles for Client Portal plugin v1.3.1 */
:root {
  --cp-font-stack: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Ubuntu,"Helvetica Neue",Arial,sans-serif;
  --cp-color-bg: #ffffff;
  --cp-color-border: #d9dce1;
  --cp-color-border-focus: #2271b1;
  --cp-color-input-bg: #fff;
  --cp-color-text: #1d2327;
  --cp-color-accent: #2271b1;
  --cp-color-accent-hover: #135e96;
  --cp-color-danger: #b32d2e;
  --cp-color-danger-bg: #fce8e8;
  --cp-color-danger-border: #dc3232;
  --cp-radius: 4px;
  --cp-shadow: 0 1px 2px rgba(0,0,0,.08);
  --cp-transition: .18s cubic-bezier(.4,0,.2,1);
  --cp-spacing: 12px;
}

.client-portal-files-wrapper {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  padding: 2.5rem 1.5rem;
}

.client-portal-files-wrapper.client-portal-state-logged-in {
  flex-direction: column;
  max-width: 1200px;
  width: 100%;
  margin: 1.5rem auto 2.25rem;
  padding: 2rem 2.5rem;
  background: #fff;
  border-radius: 3px;
  box-shadow: var(--cp-shadow);
}

.client-portal-login-wrapper {
  max-width: 600px;
  width: 100%;
}

.client-portal-login-status {
  margin-bottom: 0;
  text-align: center;
}

.client-portal-login-wrapper {
  font-family: var(--cp-font-stack);
  margin: 1.5rem 0 2.25rem;
  background: var(--cp-color-bg);
  border: 1px solid var(--cp-color-border);
  border-radius: var(--cp-radius);
  padding: 1rem 1.4rem;
  box-shadow: var(--cp-shadow);
}

.client-portal-login-wrapper.client-portal-logged-in { width:100%; max-width: none; }

.client-portal-login-form { margin: 0; }

.client-portal-field-group { margin-bottom: 1rem; }
.client-portal-field-group:last-of-type { margin-bottom: 1.15rem; }

.client-portal-label {
  display: block;
  font-weight: 300;
  margin-bottom: .35rem;
  color: var(--cp-color-text);
  font-size: 1.125rem;
  letter-spacing: .3px;
}

.client-portal-input {
  width: 100%;
  font: inherit;
  font-size: .95rem;
  padding: .55rem .65rem;
  border: 1px solid var(--cp-color-border);
  border-radius: var(--cp-radius);
  background: var(--cp-color-input-bg);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0);
  transition: border-color var(--cp-transition), box-shadow var(--cp-transition), background-color var(--cp-transition);
}
.client-portal-input:focus {
  outline: 0;
  border-color: var(--cp-color-border-focus);
  box-shadow: 0 0 0 1px var(--cp-color-border-focus);
}
.client-portal-input:focus-visible { outline: 2px solid var(--cp-color-border-focus); outline-offset: 1px; }

.client-portal-actions { text-align: right; }

.client-portal-files-wrapper .client-portal-button {
  --btn-bg: var(--primary);
  --btn-bg-hover: var(--secondary);
  --btn-color: #fff;
  display: inline-flex;
  width: 100%;
  text-align: center;
  justify-content: center;
  align-items: center;
  gap: .4ch;
  font: inherit;
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: .3px;
  padding: .65rem 1.05rem .6rem;
  border: 1px solid var(--btn-bg);
  background: var(--btn-bg);
  color: #fff;
  border-radius: var(--cp-radius);
  cursor: pointer;
  text-decoration: none;
  box-shadow: 0 1px 1px rgba(0,0,0,.08),0 1px 0 rgba(0,0,0,.05) inset;
  transition: background var(--cp-transition), border-color var(--cp-transition), transform var(--cp-transition), box-shadow var(--cp-transition);
}
.client-portal-files-wrapper .client-portal-button:hover,
.client-portal-files-wrapper .client-portal-button:focus { background: var(--btn-bg-hover); text-decoration: none; }
.client-portal-files-wrapper .client-portal-button:active { transform: translateY(1px); }

.client-portal-button-secondary {
  --btn-bg: #f6f7f7;
  --btn-bg-hover: #e0e3e7;
  --btn-color: #2c3338;
  color: var(--btn-color);
  border-color: #c3c4c7;
  background: linear-gradient(var(--btn-bg), #edeff0);
}
.client-portal-button-secondary:hover,
.client-portal-button-secondary:focus { background: linear-gradient(var(--btn-bg-hover), var(--btn-bg)); }

.client-portal-alert {
  padding: .75rem .9rem;
  border: 1px solid var(--cp-color-border);
  border-radius: var(--cp-radius);
  margin: 0 0 1rem;
  font-size: .9rem;
  line-height: 1.3;
  background: #f8f9fa;
  width: 100%;
}
.client-portal-alert-error {
  border-color: var(--cp-color-danger-border);
  background: var(--cp-color-danger-bg);
  color: var(--cp-color-danger);
}

.client-portal-file-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .4rem;
}

.client-portal-file-item { position: relative; }

.client-portal-file-link {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .65rem .75rem .6rem;
  background: #f6f7f7;
  border: 1px solid #d6d8db;
  border-radius: var(--cp-radius);
  color: var(--cp-color-text);
  text-decoration: none;
  font-size: .9rem;
  font-weight: 500;
  line-height: 1.15;
  transition: background var(--cp-transition), border-color var(--cp-transition), box-shadow var(--cp-transition);
}
.client-portal-file-link:hover,
.client-portal-file-link:focus {
  background: #fff;
  border-color: var(--cp-color-border-focus);
  box-shadow: 0 0 0 1px var(--cp-color-border-focus), 0 1px 2px rgba(0,0,0,.08);
}

/* File extension badges (basic) */
.client-portal-file-item[class*=" ext-"] .client-portal-file-link::before {
  content: attr(data-ext);
  display: inline-block;
  font-size: .65rem;
  font-weight: 700;
  padding: .15rem .35rem .2rem;
  line-height: 1;
  letter-spacing: .5px;
  background: #2271b1;
  color: #fff;
  border-radius: 2px;
  text-transform: uppercase;
}
/* Assign data-ext attr via attribute selector fallback */
.client-portal-file-item.ext-pdf .client-portal-file-link::before { content: 'PDF'; background:#d63638; }
.client-portal-file-item.ext-doc .client-portal-file-link::before, .client-portal-file-item.ext-docx .client-portal-file-link::before { content: 'DOC'; background:#2271b1; }
.client-portal-file-item.ext-xls .client-portal-file-link::before, .client-portal-file-item.ext-xlsx .client-portal-file-link::before { content: 'XLS'; background:#2f855a; }
.client-portal-file-item.ext-zip .client-portal-file-link::before { content: 'ZIP'; background:#6d28d9; }
.client-portal-file-item.ext-txt .client-portal-file-link::before { content: 'TXT'; background:#4b5563; }
.client-portal-file-item.ext-png .client-portal-file-link::before { content: 'PNG'; background:#0d9488; }
.client-portal-file-item.ext-jpg .client-portal-file-link::before, .client-portal-file-item.ext-jpeg .client-portal-file-link::before { content: 'JPG'; background:#db2777; }

.client-portal-no-files { font-style: italic; opacity: .8; }

/* New borderless files table styles */
.client-portal-files-table { width:100%; border-collapse:collapse; margin:1.25rem 0 0; font-family:var(--cp-font-stack); font-size:1.125rem; }
.client-portal-files-table thead th { font-size:1rem; letter-spacing:.08em; text-transform:uppercase; font-weight:600; padding:.55rem .75rem .45rem; color:#555; background:transparent; border:none; }
.client-portal-files-table tbody td { padding:1rem .75rem; border:none; vertical-align:middle; text-align: center; }
.client-portal-files-table tbody tr { transition:background var(--cp-transition), box-shadow var(--cp-transition); }
.client-portal-files-table tbody tr:nth-child(even){ background:rgba(0,0,0,.025); }
.client-portal-files-table tbody tr:hover{ background:#fff; box-shadow:0 0 0 1px var(--cp-color-border-focus),0 1px 2px rgba(0,0,0,.08); }
.client-portal-files-table code { background:rgba(0,0,0,.04); padding:.15rem .35rem; border-radius:3px; font-size:1rem; }
.client-portal-files-table .cp-col-num,.client-portal-files-table .cp-cell-num { width:3ch; text-align:right; font-variant-numeric:tabular-nums; }
/*.client-portal-files-table .cp-col-action,.client-portal-files-table .cp-cell-action { text-align:right; }*/
/* Override full-width buttons inside table */
.client-portal-files-table .cp-download-btn { font-size:1rem; padding:.75rem 1.25rem; line-height:1.1; width: 100%; text-transform:uppercase; }

/* Mobile stacking */
@media (max-width: 640px) {
  .client-portal-files-table thead { display:none; }
  .client-portal-files-table, .client-portal-files-table tbody, .client-portal-files-table tr, .client-portal-files-table td { display:block; width:100%; }
  .client-portal-files-table tr { margin:0 0 .85rem; background:#fff !important; box-shadow:0 1px 2px rgba(0,0,0,.08); border-radius:6px; padding:.25rem .5rem .6rem; overflow-x: auto; }
  .client-portal-files-table tbody td { padding:.4rem 0 .35rem; border:none; position:relative; display: flex; white-space: nowrap; }
  .client-portal-files-table tbody td[data-label]:not(.cp-cell-action)::before { content:attr(data-label)": "; font-weight:600; font-size:1rem; letter-spacing:.05em; text-transform:uppercase; color:#666; margin-right:.35rem; }
  .client-portal-files-table .cp-cell-action { padding-top:.55rem; }
  .client-portal-files-table .cp-cell-num::before { content:'# '; font-weight:600; }
}

/* Responsive tweaks */
@media (max-width:600px) {
  .client-portal-login-wrapper, .client-portal-files-wrapper { padding: 1.25rem 1rem 1.5rem; }
  .client-portal-actions { text-align: left; }
  .client-portal-button { width: 100%; justify-content: center; }
}
