/* PINIT Look & Feel theme layer — tokens and component rules per
   PINIT_Styleguide_Erweiterung.docx. Scoped to .pinit-theme so it never
   collides with anything else; PUBLISH's Studio applies this class on
   <body>, the public share viewer deliberately does not (the plan
   principle: "the viewer should interfere as little as possible" with a
   customer's own document design). */

:root, .pinit-theme {
  --pinit-color-brand-dark: #1D1733;
  --pinit-color-primary: #E26A61;
  --pinit-color-primary-hover: #D95D54;
  --pinit-color-primary-soft: rgba(226, 106, 97, 0.12);
  --pinit-color-app-bg: #E5E4DF;
  --pinit-color-surface: #FFFFFF;
  --pinit-color-surface-muted: #F7F5F2;
  --pinit-color-text: #2E2E2E;
  --pinit-color-text-muted: #6F6F6F;
  --pinit-color-border: #D8D8D8;
  --pinit-color-border-light: #EAEAEA;
  --pinit-color-success: #4DAA57;
  --pinit-color-warning: #F2A93B;
  --pinit-color-error: #D84343;
  --pinit-color-disabled: #BDBDBD;

  --pinit-radius-sm: 6px;
  --pinit-radius-md: 8px;
  --pinit-radius-lg: 14px;
  --pinit-radius-xl: 18px;

  --pinit-shadow-card: 0 8px 18px rgba(0, 0, 0, 0.12);
  --pinit-shadow-card-hover: 0 10px 22px rgba(0, 0, 0, 0.16);

  --pinit-space-1: 4px;
  --pinit-space-2: 8px;
  --pinit-space-3: 12px;
  --pinit-space-4: 16px;
  --pinit-space-6: 24px;
  --pinit-space-8: 32px;

  font-family: "Roboto", Arial, sans-serif;
}

.pinit-theme {
  background: var(--pinit-color-app-bg);
  color: var(--pinit-color-text);
  margin: 0;
  min-height: 100vh;
  font-size: 14px;
  line-height: 20px;
  font-weight: 400;
}

.pinit-theme * { box-sizing: border-box; }

.pinit-theme a { color: var(--pinit-color-primary); text-decoration: none; }
.pinit-theme a:hover { text-decoration: underline; }

/* Typography scale */
.pinit-theme h1 { font-size: 20px; font-weight: 500; line-height: 28px; margin: 0 0 var(--pinit-space-4); }
.pinit-theme h2 { font-size: 16px; font-weight: 500; line-height: 24px; margin: var(--pinit-space-6) 0 var(--pinit-space-3); }
.pinit-theme label, .pinit-theme .field-label { font-size: 12px; font-weight: 400; line-height: 16px; color: var(--pinit-color-text-muted); display: block; margin-bottom: var(--pinit-space-1); }
.pinit-theme .meta { font-size: 12px; line-height: 16px; color: var(--pinit-color-text-muted); }

/* App shell */
.pinit-shell {
  min-height: 100vh;
}
.pinit-topbar {
  display: flex;
  align-items: center;
  gap: var(--pinit-space-4);
  padding: var(--pinit-space-3) var(--pinit-space-6);
  background: var(--pinit-color-surface);
  border-bottom: 1px solid var(--pinit-color-border-light);
}
.pinit-brand {
  display: flex;
  align-items: center;
  gap: var(--pinit-space-2);
}
.pinit-brand-badge {
  width: 32px;
  height: 32px;
  border-radius: var(--pinit-radius-md);
  background: var(--pinit-color-brand-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
}
.pinit-brand-badge img { width: 18px; height: 18px; }
.pinit-brand-name { font-size: 16px; font-weight: 500; color: var(--pinit-color-text); }

.pinit-nav { display: flex; gap: var(--pinit-space-1); margin-left: var(--pinit-space-6); }
.pinit-nav a {
  display: flex;
  align-items: center;
  gap: var(--pinit-space-1);
  padding: var(--pinit-space-2) var(--pinit-space-3);
  border-radius: var(--pinit-radius-md);
  color: var(--pinit-color-text-muted);
  font-weight: 500;
  font-size: 13px;
}
.pinit-nav a:hover { background: var(--pinit-color-surface-muted); text-decoration: none; }
.pinit-nav a.active { color: var(--pinit-color-primary); background: var(--pinit-color-primary-soft); }
.pinit-nav .material-symbols-outlined { font-size: 20px; }

.pinit-topbar-spacer { flex: 1; }
.pinit-user { font-size: 13px; color: var(--pinit-color-text-muted); display: flex; align-items: center; gap: var(--pinit-space-3); }

.pinit-main {
  max-width: 1040px;
  margin: 0 auto;
  padding: var(--pinit-space-6);
}

/* Cards */
.pinit-card {
  background: var(--pinit-color-surface);
  border: 1px solid var(--pinit-color-border-light);
  border-radius: var(--pinit-radius-lg);
  box-shadow: var(--pinit-shadow-card);
  padding: var(--pinit-space-6);
  margin-bottom: var(--pinit-space-4);
}

/* Buttons — <button> gets the primary look by default (bare element
   selector); <a class="pinit-btn ..."> opts in explicitly. Every rule
   here that needs to win over `.pinit-theme a`'s (class+element,
   specificity 0-1-1) default link color is qualified as
   `.pinit-theme .pinit-btn...` (class+class, 0-2-0, which beats it on
   class count regardless of source order) rather than a bare
   `.pinit-btn...` class alone. */
.pinit-theme button,
.pinit-theme .pinit-btn {
  height: 40px;
  padding: 0 var(--pinit-space-4);
  border-radius: var(--pinit-radius-md);
  font-size: 13px;
  font-weight: 500;
  line-height: 18px;
  border: 1px solid transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: var(--pinit-space-1);
  font-family: inherit;
  text-decoration: none;
}
.pinit-theme button,
.pinit-theme .pinit-btn-primary {
  background: var(--pinit-color-primary);
  color: #fff;
}
.pinit-theme button:hover,
.pinit-theme .pinit-btn-primary:hover { background: var(--pinit-color-primary-hover); text-decoration: none; }

.pinit-theme button.pinit-btn-secondary,
.pinit-theme .pinit-btn-secondary {
  background: var(--pinit-color-surface);
  color: var(--pinit-color-text);
  border-color: var(--pinit-color-border);
}
.pinit-theme button.pinit-btn-secondary:hover,
.pinit-theme .pinit-btn-secondary:hover { background: var(--pinit-color-surface-muted); text-decoration: none; }
.pinit-theme button.pinit-btn-danger,
.pinit-theme .pinit-btn-danger { background: var(--pinit-color-error); color: #fff; }
.pinit-theme button.pinit-btn-sm,
.pinit-theme .pinit-btn-sm { height: 32px; padding: 0 var(--pinit-space-3); font-size: 12px; }

/* Inputs */
.pinit-theme input[type="text"],
.pinit-theme input[type="password"],
.pinit-theme input[type="email"],
.pinit-theme input[type="file"],
.pinit-theme select,
.pinit-theme textarea {
  height: 42px;
  padding: 0 var(--pinit-space-3);
  border: 1px solid var(--pinit-color-border);
  border-radius: var(--pinit-radius-sm);
  font-size: 14px;
  font-family: inherit;
  color: var(--pinit-color-text);
  background: var(--pinit-color-surface);
  width: 100%;
  max-width: 480px;
}
.pinit-theme textarea { height: auto; min-height: 160px; padding: var(--pinit-space-3); font-family: "Roboto Mono", monospace; font-size: 13px; }
.pinit-theme input:focus,
.pinit-theme select:focus,
.pinit-theme textarea:focus {
  border-color: var(--pinit-color-primary);
  box-shadow: 0 0 0 3px rgba(226, 106, 97, 0.16);
  outline: none;
}
.pinit-theme form p { margin: 0 0 var(--pinit-space-4); }

/* Dashboard stat strip -- flex-wrap + a flex-basis is enough on its own
   to reflow from 4-across to 2x2 (or a single column) on a narrow
   viewport, no media query needed. Found overflowing at 375px width
   during an MVP audit; confirmed by screenshot, not assumed. */
.pinit-dashboard-strip {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pinit-space-4);
  margin-bottom: var(--pinit-space-4);
}
.pinit-dashboard-strip > * { flex: 1 1 140px; }

/* Wraps a <table> so it scrolls horizontally within its own bounds
   rather than overflowing the page -- the page body itself must never
   scroll sideways. Pair with a .pinit-card that keeps `overflow:hidden`
   for its rounded corners; this inner wrapper is what actually scrolls. */
.pinit-table-scroll { overflow-x: auto; }

/* Tables / list items */
.pinit-theme table { width: 100%; border-collapse: collapse; }
.pinit-theme thead th {
  background: var(--pinit-color-surface-muted);
  font-weight: 500;
  font-size: 12px;
  color: var(--pinit-color-text-muted);
  text-align: left;
  padding: var(--pinit-space-3) var(--pinit-space-4);
  border-bottom: 1px solid var(--pinit-color-border-light);
}
.pinit-theme tbody td {
  padding: var(--pinit-space-3) var(--pinit-space-4);
  border-bottom: 1px solid var(--pinit-color-border-light);
  font-size: 14px;
}
.pinit-theme tbody tr:hover { background: var(--pinit-color-surface-muted); }

/* Status badges */
.pinit-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 500;
  padding: 2px 10px;
  border-radius: 999px;
}
.pinit-badge-success { background: rgba(77, 170, 87, 0.14); color: var(--pinit-color-success); }
.pinit-badge-warning { background: rgba(242, 169, 59, 0.16); color: #92660c; }
.pinit-badge-muted { background: var(--pinit-color-surface-muted); color: var(--pinit-color-text-muted); }
.pinit-badge-error { background: rgba(216, 67, 67, 0.12); color: var(--pinit-color-error); }

/* Messages */
.pinit-messages { list-style: none; margin: 0 0 var(--pinit-space-4); padding: 0; }
.pinit-messages li {
  background: rgba(216, 67, 67, 0.1);
  color: var(--pinit-color-error);
  border: 1px solid rgba(216, 67, 67, 0.25);
  border-radius: var(--pinit-radius-md);
  padding: var(--pinit-space-3) var(--pinit-space-4);
  margin-bottom: var(--pinit-space-2);
  font-size: 13px;
}

.pinit-actions { display: flex; align-items: center; gap: var(--pinit-space-3); flex-wrap: wrap; }
.pinit-form-inline { display: inline; }
.pinit-hint { color: var(--pinit-color-text-muted); font-size: 13px; }

/* Bare/public pages that still want the theme's typography without the
   full app shell (login, password gate) */
.pinit-bare {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--pinit-space-6);
}
.pinit-bare-card {
  width: 100%;
  max-width: 360px;
}
.pinit-bare-logo { display: flex; justify-content: center; margin-bottom: var(--pinit-space-6); }
.pinit-bare-logo img { height: 28px; }
