/* =========================================================================
   ASO Toolytics — Auth / Account / Extranet stylesheet
   Light redesign. Layered on top of style.css.
   ========================================================================= */

.auth-body, .extranet-body {
  background:
    radial-gradient(900px 600px at 0% 0%, #EAF1FF 0%, transparent 60%),
    radial-gradient(800px 600px at 100% 100%, #EEEBFF 0%, transparent 60%),
    var(--bg);
  min-height: 100vh;
}
.visually-hidden {
  position: absolute;
  clip: rect(0 0 0 0);
  width: 1px; height: 1px;
  overflow: hidden; white-space: nowrap;
}

/* ---------- Auth shell (login.html + extranet login) -------------------- */
.auth-shell {
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.auth-card {
  width: 100%; max-width: 440px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 32px;
  box-shadow: var(--shadow);
}
.auth-card-head { text-align: center; margin-bottom: 24px; }
.auth-card-head .brand { font-size: 1.4rem; }
.auth-tagline { color: var(--muted); margin: 6px 0 0; font-size: 13.5px; }
.auth-tabs {
  display: grid; grid-template-columns: 1fr 1fr; gap: 2px;
  background: var(--bg-soft); padding: 3px; border-radius: 10px; margin-bottom: 20px;
}
.auth-tab {
  border: 0; padding: 8px 14px; border-radius: 7px; background: transparent;
  color: var(--muted); font-weight: 600; font-size: 13px;
  cursor: pointer;
}
.auth-tab-active {
  background: #FFF; color: var(--ink);
  box-shadow: var(--shadow-sm);
}
.auth-form { display: flex; flex-direction: column; gap: 14px; }
.auth-field { display: flex; flex-direction: column; gap: 6px; }
.auth-field > span { font-size: 12.5px; color: var(--ink-2); font-weight: 500; }
.auth-field input,
.auth-field select {
  padding: 10px 12px; border-radius: 8px;
  background: #FFF;
  border: 1px solid var(--border);
  color: var(--ink);
  font-size: 13.5px;
  height: 40px;
  transition: border-color .12s, box-shadow .12s;
}
.auth-field input:focus, .auth-field select:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(45,107,255,.15);
}
.auth-field-wide { grid-column: 1 / -1; }
.auth-submit {
  background: var(--primary);
  color: #FFF;
  border: 0;
  padding: 12px 14px;
  border-radius: 8px;
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(45,107,255,.25);
  transition: background .12s;
}
.auth-submit:hover { background: var(--primary-ink); }
.auth-submit:disabled { opacity: 0.6; cursor: not-allowed; }
.auth-helper { font-size: 12px; color: var(--muted); margin: 0; }
.auth-error {
  margin: 0; padding: 10px 12px; border-radius: 8px;
  background: var(--danger-soft); color: var(--danger);
  border: 1px solid #F5C7C9; font-size: 13px;
}
.auth-success {
  margin: 0; padding: 10px 12px; border-radius: 8px;
  background: var(--success-soft); color: var(--success);
  border: 1px solid #C7EAD3; font-size: 13px;
}
.auth-card-foot { margin-top: 18px; text-align: center; }
.auth-link { color: var(--muted); font-size: 13px; }
.auth-link-inline { color: var(--primary); }
.auth-link-inline:hover { text-decoration: underline; }

/* ---------- Drawer ------------------------------------------------------- */
.drawer { position: fixed; inset: 0; z-index: 1000; }
.drawer-backdrop { position: absolute; inset: 0; background: rgba(15,23,41,.45); }
.drawer-panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(680px, 100vw);
  background: var(--surface); border-left: 1px solid var(--border);
  display: flex; flex-direction: column; overflow: hidden;
  box-shadow: var(--shadow-lg);
}
.drawer-panel-wide  { width: min(960px, 100vw); }
.drawer-panel-small { width: min(480px, 100vw); }
.drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 22px; border-bottom: 1px solid var(--border);
}
.drawer-head h3 { margin: 0; font-size: 16px; font-weight: 600; color: var(--ink); }
.drawer-body { padding: 22px; overflow-y: auto; flex: 1 1 auto; }
.drawer-section { margin-bottom: 24px; }
.drawer-section h4 {
  margin: 0 0 10px; font-size: 14px; color: var(--ink);
  border-bottom: 1px solid var(--border); padding-bottom: 6px;
  font-weight: 600;
}

/* ---------- Account drawer layout --------------------------------------- */
.account-shell {
  display: grid; grid-template-columns: 220px 1fr;
  flex: 1 1 auto; min-height: 0;
}
.account-nav {
  background: var(--bg); border-right: 1px solid var(--border);
  padding: 14px 8px; overflow-y: auto;
}
.account-nav-group { display: flex; flex-direction: column; gap: 2px; margin-bottom: 12px; }
.account-nav-group-title {
  font-size: 11px; color: var(--muted); text-transform: uppercase;
  letter-spacing: 0.05em; padding: 8px 12px 4px; font-weight: 600;
}
.account-nav-btn {
  border: 0; background: transparent; color: var(--ink-2);
  padding: 8px 12px; border-radius: 7px; text-align: left; font-size: 13.5px;
  cursor: pointer;
}
.account-nav-btn:hover { background: var(--bg-soft); }
.account-nav-active { background: var(--primary-soft); color: var(--primary-ink); font-weight: 600; }
.account-nav-logout { color: var(--danger); }

.account-main { padding: 20px; overflow-y: auto; }
.account-pane h4 { margin: 0 0 14px; font-size: 16px; font-weight: 600; color: var(--ink); }
.account-pane h5 { margin: 0 0 10px; font-size: 14px; color: var(--ink); font-weight: 600; }

/* ---------- Form grids -------------------------------------------------- */
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.form-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 10px;
}

/* Card heading (h5) used in settings */
.card h5 {
  margin: 0 0 14px;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}

/* ---------- Tables (settings + invoices + team) ------------------------- */
.data-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13.5px;
}
.data-table th, .data-table td {
  padding: 12px 16px;
  text-align: left;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
  color: var(--ink);
}
.data-table th {
  color: var(--muted);
  font-weight: 600;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--surface-2);
  white-space: nowrap;
}
.data-table tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover td { background: var(--surface-2); }
.user-cell { display: flex; flex-direction: column; }
.user-cell .muted { font-size: 12px; color: var(--muted); }

/* ---------- Badges (status / role) -------------------------------------- */
.badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 9px; border-radius: 999px;
  font-size: 11.5px; font-weight: 600;
  text-transform: capitalize;
  background: var(--bg-soft); color: var(--ink); border: 1px solid var(--border);
}
.badge-active,
.badge-paid                       { background: var(--success-soft); color: var(--success); border-color: #C7EAD3; }
.badge-inactive,
.badge-failed,
.badge-void                       { background: var(--danger-soft);  color: var(--danger);  border-color: #F5C7C9; }
.badge-pending                    { background: var(--warn-soft);    color: var(--warn);    border-color: #F9DEB3; }
.badge-admin,
.badge-admin-grant                { background: var(--primary-soft); color: var(--primary-ink); border-color: #CFE0FF; }
.badge-user                       { background: var(--bg-soft);      color: var(--muted);   border-color: var(--border); }
.badge-removed                    { background: var(--danger-soft);  color: var(--danger);  border-color: #F5C7C9; }
.badge-refunded                   { background: var(--bg-soft);      color: var(--muted);   border-color: var(--border); }

/* ---------- Plans (subscription page) ----------------------------------- */
.plan-grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.plan-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 24px;
  display: flex; flex-direction: column;
  box-shadow: var(--shadow-sm);
  transition: border-color .12s;
}
.plan-card:hover { border-color: var(--border-strong); }
.plan-card-current {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(45,107,255,.08);
}
.plan-card-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
}
.plan-card-head strong, .plan-card-head h4 { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; }
.plan-tagline { color: var(--muted); font-size: 13px; margin: 0 0 12px; min-height: 38px; }
.plan-price { margin-bottom: 12px; display: flex; align-items: baseline; gap: 6px; }
.plan-price strong { font-size: 28px; font-weight: 700; letter-spacing: -0.02em; }
.plan-price .per { color: var(--muted); font-size: 13px; }
.plan-features {
  list-style: none; padding: 0; margin: 0 0 16px;
  font-size: 13px; color: var(--ink-2);
  display: flex; flex-direction: column; gap: 8px;
  flex: 1;
}
.plan-features li {
  display: flex; align-items: flex-start; gap: 8px;
  padding-left: 0; position: relative;
}
.plan-features li::before {
  content: "";
  display: inline-block;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--success-soft);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2316A34A' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
  background-position: center;
  background-repeat: no-repeat;
  flex-shrink: 0;
  margin-top: 2px;
}
.plan-actions { margin-top: auto; }
.plan-actions button { width: 100%; }

/* ---------- Add-on cards ------------------------------------------------ */
.addon-grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
.addon-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 20px 22px;
  box-shadow: var(--shadow-sm);
}
.addon-card-owned {
  border-color: var(--success);
  background: linear-gradient(180deg, #F5FCF7 0%, #FFF 60%);
}
.addon-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-top: 12px;
}
.addon-price { font-weight: 700; font-size: 17px; letter-spacing: -0.01em; }

/* ---------- Usage tiles ------------------------------------------------- */
.usage-grid {
  display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.usage-tile {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 14px 16px;
  display: flex; flex-direction: column;
  box-shadow: var(--shadow-sm);
}
.usage-tile strong {
  font-size: 22px;
  font-weight: 700;
  margin-top: 4px;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}
.usage-tile .label,
.usage-tile small {
  font-size: 11.5px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 600;
}
.usage-list { list-style: none; padding: 0; margin: 0; }
.usage-list-stacked li {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border);
}
.usage-list-stacked li:last-child { border-bottom: 0; }
.account-usage-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 6px 0;
  box-shadow: var(--shadow-sm);
}

/* ---------- Billing settings (2-column) -------------------------------- */
.billing-grid {
  display: grid; gap: 16px;
  grid-template-columns: 1fr 1fr;
}
.cards-list { margin-bottom: 14px; display: flex; flex-direction: column; gap: 8px; }
.card-row {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 13px;
}
.card-row .card-brand { font-weight: 600; }
.card-row button { margin-left: auto; }

/* ---------- Settings: checks / radios ---------------------------------- */
.check-row, .radio-row {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13.5px;
  color: var(--ink);
}
.check-row:last-child, .radio-row:last-child { border-bottom: 0; }
.check-row input,
.radio-row input {
  margin-top: 4px;
  width: 16px; height: 16px;
  accent-color: var(--primary);
}
.check-row > span > strong,
.radio-row > span > strong { color: var(--ink); font-weight: 600; }

.warn-box {
  background: var(--danger-soft);
  border: 1px solid #F5C7C9;
  color: var(--danger);
  padding: 12px 14px;
  border-radius: 8px;
  font-size: 13px;
  margin: 12px 0;
}
.deactivate-list {
  color: var(--ink-2);
  padding-left: 20px;
  margin: 0 0 16px;
  font-size: 13.5px;
}
.deactivate-list li { margin-bottom: 6px; }

.kv-grid {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 6px 14px;
  margin: 0;
}
.kv-grid dt { color: var(--muted); font-size: 13px; }
.kv-grid dd { margin: 0; font-size: 13.5px; color: var(--ink); }

/* Sidebar grouping overrides — layout now driven by the .app grid in style.css. */

/* ---------- Extranet shell --------------------------------------------- */
.extranet-shell { min-height: 100vh; display: flex; flex-direction: column; }
.extranet-header {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  padding: 14px 24px;
}
.extranet-header-inner {
  display: flex; align-items: center; justify-content: space-between;
  max-width: 1400px; margin: 0 auto;
}
.brand-mono { color: var(--ink); }
.extranet-header h1 { font-size: 16px; margin: 0; color: var(--ink); }
.extranet-header-right { display: flex; gap: 12px; align-items: center; }
.extranet-who { color: var(--muted); font-size: 13px; }

.extranet-body-grid {
  display: grid; grid-template-columns: 220px 1fr;
  flex: 1 1 auto; min-height: 0;
}
.extranet-nav {
  background: var(--surface);
  border-right: 1px solid var(--border);
  padding: 16px 8px;
  display: flex; flex-direction: column; gap: 4px;
}
.extranet-nav-btn {
  border: 0; background: transparent; color: var(--ink-2);
  padding: 9px 14px; border-radius: 7px; text-align: left; font-size: 13.5px;
  cursor: pointer;
}
.extranet-nav-btn:hover { background: var(--bg-soft); }
.extranet-nav-active {
  background: var(--primary-soft);
  color: var(--primary-ink);
  font-weight: 600;
}
.extranet-main { padding: 24px; overflow-y: auto; }
.extranet-main h2 { margin: 0 0 18px; font-size: 22px; color: var(--ink); letter-spacing: -0.01em; }
.extranet-main h3 { margin: 0 0 12px; font-size: 15px; color: var(--ink); font-weight: 600; }

.overview-cards {
  display: grid; gap: 14px; margin-bottom: 24px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.overview-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 16px 18px;
  box-shadow: var(--shadow-sm);
}
.overview-card-label { color: var(--muted); font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.04em; font-weight: 600; }
.overview-card-value { font-size: 28px; font-weight: 700; margin-top: 4px; letter-spacing: -0.02em; color: var(--ink); }
.overview-card-sub   { color: var(--muted); font-size: 12.5px; }

.overview-grid {
  display: grid; gap: 16px;
  grid-template-columns: 1.5fr 1fr;
}
.quick-links { list-style: none; padding: 0; margin: 0; }
.quick-links li { padding: 6px 0; }

/* ---------- Responsive ------------------------------------------------- */
@media (max-width: 900px) {
  .overview-grid { grid-template-columns: 1fr; }
  .extranet-body-grid { grid-template-columns: 1fr; }
  .extranet-nav { flex-direction: row; overflow-x: auto; }
}
@media (max-width: 760px) {
  .billing-grid { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  .account-shell { grid-template-columns: 1fr; }
}
