/*
  PT Practice Management — Django admin theme
  Matches the operations dashboard (warm paper, serif display, green accent).
*/

html[data-theme="light"],
html[data-theme="dark"],
:root {
  --pt-bg: #f3efe6;
  --pt-bg-accent: #e7e0d2;
  --pt-ink: #1c1a16;
  --pt-muted: #5c574e;
  --pt-line: #cfc6b6;
  --pt-panel: #fbf8f1;
  --pt-accent: #1f4d3a;
  --pt-accent-soft: #d7e6dc;
  --pt-accent-mid: #2a634c;
  --pt-warn: #8a3b12;
  --pt-overdue-bg: #f6e7df;
  --pt-font-display: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --pt-font-body: "Avenir Next", "Segoe UI", Candara, sans-serif;

  --primary: var(--pt-accent);
  --secondary: var(--pt-accent);
  --accent: #c9a227;
  --primary-fg: #fbf8f1;

  --body-fg: var(--pt-ink);
  --body-bg: var(--pt-bg);
  --body-quiet-color: var(--pt-muted);
  --body-loud-color: var(--pt-ink);

  --header-color: var(--pt-muted);
  --header-branding-color: var(--pt-ink);
  --header-bg: rgba(251, 248, 241, 0.94);
  --header-link-color: var(--pt-accent);

  --breadcrumbs-fg: var(--pt-muted);
  --breadcrumbs-link-fg: var(--pt-accent);
  --breadcrumbs-bg: var(--pt-bg-accent);

  --link-fg: var(--pt-accent);
  --link-hover-color: #143528;
  --link-selected-fg: var(--pt-accent);

  --hairline-color: var(--pt-line);
  --border-color: #bdb3a3;

  --error-fg: #9b2c2c;
  --message-success-bg: var(--pt-accent-soft);
  --message-warning-bg: #f3e6c8;
  --message-error-bg: var(--pt-overdue-bg);

  --darkened-bg: #ebe4d6;
  --selected-bg: var(--pt-bg-accent);
  --selected-row: var(--pt-accent-soft);

  --button-fg: #fbf8f1;
  --button-bg: var(--pt-accent-mid);
  --button-hover-bg: var(--pt-accent);
  --default-button-bg: var(--pt-accent);
  --default-button-hover-bg: #143528;
  --close-button-bg: #6b655c;
  --close-button-hover-bg: #3f3b35;
  --delete-button-bg: #8a3b12;
  --delete-button-hover-bg: #6e2e0e;

  --object-tools-fg: #fbf8f1;
  --object-tools-bg: var(--pt-accent);
  --object-tools-hover-bg: #143528;

  --font-family-primary: var(--pt-font-body);
}

/* Prefer the branded light look even if OS is dark */
@media (prefers-color-scheme: dark) {
  :root {
    --primary: var(--pt-accent);
    --primary-fg: #fbf8f1;
    --body-fg: var(--pt-ink);
    --body-bg: var(--pt-bg);
    --body-quiet-color: var(--pt-muted);
    --body-loud-color: var(--pt-ink);
    --breadcrumbs-link-fg: var(--pt-accent);
    --breadcrumbs-bg: var(--pt-bg-accent);
    --link-fg: var(--pt-accent);
    --link-hover-color: #143528;
    --hairline-color: var(--pt-line);
    --border-color: #bdb3a3;
    --darkened-bg: #ebe4d6;
    --selected-bg: var(--pt-bg-accent);
    --selected-row: var(--pt-accent-soft);
    --close-button-bg: #6b655c;
    --close-button-hover-bg: #3f3b35;
  }
}

/* Hide Django's theme toggle — product UI is light / paper-toned */
.theme-toggle {
  display: none !important;
}

html, body {
  min-height: 100%;
}

body {
  background:
    radial-gradient(1200px 500px at 10% -10%, #efe6d4 0%, transparent 55%),
    radial-gradient(900px 400px at 100% 0%, #dfe8e2 0%, transparent 50%),
    var(--pt-bg);
  color: var(--pt-ink);
  font-family: var(--pt-font-body);
}

/* —— Header / branding —— */
#header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 1.25rem;
  padding: 0.85rem 1.5rem 0;
  border-bottom: 1px solid var(--pt-line);
  backdrop-filter: blur(8px);
  box-shadow: none;
}

/* Practice section nav — full-width row under branding / user tools */
.pt-admin-nav {
  flex: 1 1 100%;
  order: 3;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.95rem;
  margin: 0 -1.5rem;
  padding: 0.55rem 1.5rem 0.7rem;
  border-top: 1px solid var(--pt-line);
  background: rgba(251, 248, 241, 0.72);
  font-size: 0.92rem;
}

.pt-admin-nav a {
  color: var(--pt-accent);
  text-decoration: none;
  font-weight: 500;
}

.pt-admin-nav a:link,
.pt-admin-nav a:visited {
  color: var(--pt-accent);
}

.pt-admin-nav a:hover {
  color: #143528;
  text-decoration: underline;
}

/* Outreach email draft (change form) */
.pt-outreach-email {
  max-width: 42rem;
  padding: 0.85rem 0 0.25rem;
}

.pt-outreach-meta {
  margin: 0 0 0.75rem;
  color: var(--pt-muted);
  font-size: 0.9rem;
}

.pt-outreach-bcc {
  margin: 0 0 0.85rem;
  padding: 0.45rem 0.55rem;
  background: #eef5ef;
  border-left: 3px solid #1a5c2e;
  font-size: 0.9rem;
}

.pt-outreach-email label {
  display: block;
  margin: 0.65rem 0 0.3rem;
  font-weight: 600;
  color: var(--pt-ink);
}

.pt-copy-row {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
}

.pt-copy-field {
  flex: 1 1 auto;
  width: 100%;
  min-width: 0;
  font-family: var(--pt-font-body);
  font-size: 0.92rem;
  line-height: 1.45;
  color: var(--pt-ink);
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
  padding: 0.45rem 0.55rem;
  resize: vertical;
}

input.pt-copy-field {
  height: 2.15rem;
}

.pt-copy-btn {
  flex: 0 0 auto;
  white-space: nowrap;
}

.pt-copy-btn.is-copied {
  background: var(--pt-accent) !important;
}

#branding {
  display: flex;
  align-items: center;
  gap: 1rem;
}

#site-name {
  margin: 0;
  padding: 0;
  font-family: var(--pt-font-display);
  font-size: 1.35rem;
  font-weight: 600;
  line-height: 1.15;
}

#site-name a,
#site-name a:link,
#site-name a:visited {
  color: var(--pt-ink);
  text-decoration: none;
}

#site-name a:hover {
  color: var(--pt-accent);
  text-decoration: none;
}

.pt-brand-sub {
  display: block;
  margin-top: 0.2rem;
  font-family: var(--pt-font-body);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pt-muted);
}

#user-tools {
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--pt-muted);
}

#user-tools a:link,
#user-tools a:visited {
  color: var(--pt-accent);
  border-bottom-color: transparent;
}

#user-tools a:hover {
  color: #143528;
  border-bottom-color: var(--pt-line);
}

/* —— Breadcrumbs —— */
div.breadcrumbs {
  padding: 0.65rem 1.5rem;
  border-bottom: 1px solid var(--pt-line);
  font-size: 0.82rem;
}

div.breadcrumbs a:focus,
div.breadcrumbs a:hover {
  color: #143528;
}

/* —— Content chrome —— */
#container {
  height: auto;
  min-height: 100%;
}

#main {
  padding-top: 0;
}

#content {
  padding: 1.35rem 1.5rem 2rem;
}

#content h1,
.main h1 {
  font-family: var(--pt-font-display);
  font-weight: 600;
  font-size: 1.75rem;
  color: var(--pt-ink);
  margin-bottom: 0.75rem;
}

#content-related {
  background: transparent;
}

/* —— Admin home intro —— */
.pt-admin-intro {
  margin: 0 0 1.25rem;
  padding: 1.1rem 1.2rem 1.15rem;
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
}

.pt-admin-eyebrow {
  margin: 0;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  color: var(--pt-muted);
}

.pt-admin-intro h2 {
  margin: 0.2rem 0 0.35rem;
  font-family: var(--pt-font-display);
  font-size: 1.45rem;
  font-weight: 600;
  color: var(--pt-ink);
}

.pt-admin-lede {
  margin: 0;
  max-width: 42rem;
  color: var(--pt-muted);
  font-size: 0.95rem;
  line-height: 1.45;
}

.pt-admin-actions {
  margin: 0.75rem 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.1rem;
  font-size: 0.9rem;
}

.pt-admin-actions a {
  font-weight: 600;
}

/* —— Modules / app cards —— */
.module,
.dashboard .module {
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
  border-radius: 0;
  margin-bottom: 1rem;
  box-shadow: none;
  overflow: hidden;
}

.module caption,
.module h2,
.inline-group h2,
#content-related .module h2,
.dashboard .module caption,
.dashboard .module h2 {
  background: var(--pt-bg-accent);
  color: var(--pt-ink);
  font-family: var(--pt-font-display);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  padding: 0.7rem 0.9rem;
  border-bottom: 1px solid var(--pt-line);
  text-transform: none;
}

.module caption a.section,
.module h2 a,
.module caption a:link,
.module caption a:visited {
  color: var(--pt-ink);
}

.module caption a:hover,
.module h2 a:hover {
  color: var(--pt-accent);
}

.module table {
  border-collapse: collapse;
}

.module th,
.module td {
  border-bottom: 1px solid var(--pt-bg-accent);
  padding: 0.55rem 0.85rem;
  vertical-align: middle;
}

.module tr:last-child th,
.module tr:last-child td {
  border-bottom: none;
}

.module tr:hover th,
.module tr:hover td {
  background: rgba(215, 230, 220, 0.35);
}

a.addlink,
a.changelink,
a.viewlink {
  font-size: 0.82rem;
  font-weight: 600;
}

/* —— Changelist —— */
#changelist {
  background: transparent;
}

#changelist .results {
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
}

#changelist table thead th {
  background: var(--pt-bg-accent);
  border-bottom: 1px solid var(--pt-line);
  color: var(--pt-muted);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

#changelist table tbody tr:nth-child(odd) {
  background: var(--pt-panel);
}

#changelist table tbody tr:nth-child(even) {
  background: #f7f3ea;
}

#changelist table tbody tr:hover {
  background: var(--pt-accent-soft);
}

#changelist table tbody tr.selected {
  background: var(--pt-accent-soft) !important;
}

#toolbar {
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
  padding: 0.75rem 0.85rem;
  margin-bottom: 0.85rem;
}

#toolbar form input[type="submit"],
#changelist .actions .button,
input[type="submit"],
button.button,
a.button,
.button,
.submit-row input,
.submit-row a.deletelink {
  border-radius: 0;
  font-weight: 600;
  letter-spacing: 0.01em;
  box-shadow: none;
}

.object-tools {
  margin-bottom: 0.85rem;
}

.object-tools a:link,
.object-tools a:visited {
  border-radius: 0;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: none;
  padding: 0.45rem 0.9rem;
  background: var(--pt-accent);
}

.object-tools a:focus,
.object-tools a:hover {
  background: #143528;
}

.object-tools a.addlink {
  background: var(--pt-accent);
}

/* —— List filters —— */
#changelist-filter {
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
  border-radius: 0;
  padding: 0;
  overflow: hidden;
}

#changelist-filter h2 {
  background: var(--pt-accent);
  color: #fbf8f1;
  font-family: var(--pt-font-display);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  padding: 0.7rem 0.9rem;
  text-transform: none;
  border: none;
}

#changelist-filter h3,
#changelist-filter details > summary {
  background: var(--pt-bg-accent);
  color: var(--pt-ink);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.55rem 0.85rem;
  border-top: 1px solid var(--pt-line);
  border-bottom: 1px solid var(--pt-line);
  margin: 0;
}

#changelist-filter details {
  border: none;
  margin: 0;
}

#changelist-filter details > summary {
  list-style: none;
  cursor: pointer;
}

#changelist-filter details > summary::-webkit-details-marker {
  display: none;
}

#changelist-filter details > summary::after {
  content: "";
  float: right;
  width: 0.4rem;
  height: 0.4rem;
  margin-top: 0.2rem;
  border-right: 1.5px solid var(--pt-muted);
  border-bottom: 1.5px solid var(--pt-muted);
  transform: rotate(45deg);
  opacity: 0.7;
}

#changelist-filter details[open] > summary::after {
  transform: rotate(-135deg);
  margin-top: 0.4rem;
}

#changelist-filter ul {
  padding: 0.35rem 0;
  margin: 0;
  border: none;
}

#changelist-filter li {
  margin: 0;
  padding: 0;
}

#changelist-filter li a {
  display: block;
  padding: 0.4rem 0.9rem;
  color: var(--pt-ink);
  border-left: 3px solid transparent;
}

#changelist-filter li a:hover {
  background: rgba(215, 230, 220, 0.55);
  color: var(--pt-accent);
}

#changelist-filter li.selected a {
  background: var(--pt-accent-soft);
  color: var(--pt-accent);
  font-weight: 700;
  border-left-color: var(--pt-accent);
}

#changelist-filter a {
  word-break: break-word;
}

/* —— Forms —— */
.form-row {
  border-bottom-color: var(--pt-bg-accent);
}

fieldset.module {
  background: var(--pt-panel);
}

label {
  color: var(--pt-muted);
  font-weight: 600;
}

.aligned label {
  color: var(--pt-muted);
}

input[type="text"],
input[type="password"],
input[type="email"],
input[type="url"],
input[type="number"],
input[type="tel"],
textarea,
select,
.vTextField,
.vLargeTextField,
.vURLField {
  border: 1px solid var(--pt-line);
  border-radius: 0;
  background: #fff;
  color: var(--pt-ink);
  padding: 0.4rem 0.5rem;
}

input:focus,
textarea:focus,
select:focus {
  border-color: var(--pt-accent);
  outline: 2px solid rgba(31, 77, 58, 0.18);
  outline-offset: 1px;
}

.submit-row {
  background: var(--pt-bg-accent);
  border: 1px solid var(--pt-line);
  border-radius: 0;
  padding: 0.85rem 1rem;
}

.help,
p.help,
form .help,
.checkbox-row .help {
  color: var(--pt-muted);
}

.errornote,
ul.errorlist {
  background: var(--pt-overdue-bg);
  border-color: #e0b49a;
  color: var(--pt-warn);
}

.messagelist li {
  border-radius: 0;
  border: 1px solid var(--pt-line);
}

.messagelist li.success {
  background: var(--pt-accent-soft);
  color: var(--pt-accent);
}

.messagelist li.warning {
  background: #f3e6c8;
  color: var(--pt-warn);
}

.messagelist li.error {
  background: var(--pt-overdue-bg);
  color: var(--pt-warn);
}

/* —— Login —— */
body.login {
  background:
    radial-gradient(1000px 420px at 15% -5%, #efe6d4 0%, transparent 55%),
    radial-gradient(800px 360px at 100% 0%, #dfe8e2 0%, transparent 50%),
    var(--pt-bg);
}

.login #header {
  background: transparent;
  border-bottom: none;
  justify-content: center;
  padding: 2.5rem 1.5rem 0;
}

.login .pt-admin-nav {
  display: none;
}

.login #container {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
}

.login #content {
  padding: 1rem 1.5rem 2.5rem;
}

.login #content-main {
  max-width: 26rem;
  margin: 0 auto;
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
  padding: 1.35rem 1.4rem 1.5rem;
}

.login #site-name {
  text-align: center;
}

.login .pt-brand-sub {
  text-align: center;
}

.login .submit-row {
  background: transparent;
  border: none;
  padding: 0.5rem 0 0;
}

.login .submit-row input {
  width: 100%;
  padding: 0.65rem 1rem;
}

/* —— Nav sidebar —— */
#nav-sidebar {
  background: var(--pt-panel);
  border-right: 1px solid var(--pt-line);
}

#nav-sidebar .current-model {
  background: var(--pt-accent-soft);
}

.toggle-nav-sidebar {
  border-color: var(--pt-line);
  background: var(--pt-panel);
  color: var(--pt-ink);
}

/* —— Pagination / actions —— */
.paginator {
  background: var(--pt-bg-accent);
  border-top: 1px solid var(--pt-line);
  color: var(--pt-muted);
}

.paginator a:link,
.paginator a:visited {
  background: var(--pt-panel);
  border: 1px solid var(--pt-line);
  color: var(--pt-accent);
}

.paginator a:focus,
.paginator a:hover {
  background: var(--pt-accent-soft);
}

.paginator .this-page {
  background: var(--pt-accent);
  color: #fbf8f1;
  border: 1px solid var(--pt-accent);
}

#changelist .actions {
  background: var(--pt-bg-accent);
  border-top: 1px solid var(--pt-line);
  color: var(--pt-muted);
}

/* —— Calendar / widgets —— */
.calendar caption,
.timelist {
  background: var(--pt-accent) !important;
  color: #fbf8f1 !important;
}

.calendar td a:hover,
.timelist a:hover {
  background: var(--pt-accent-soft);
}

/* Quiet polish for related widgets */
.related-widget-wrapper select {
  min-width: 12rem;
}

@media (max-width: 1024px) {
  #header {
    padding: 0.75rem 1rem 0;
  }

  .pt-admin-nav {
    margin: 0 -1rem;
    padding: 0.5rem 1rem 0.65rem;
  }

  #content {
    padding: 1rem;
  }

  .pt-admin-intro {
    padding: 0.95rem 1rem;
  }

  .pt-copy-row {
    flex-direction: column;
  }
}
