/* Customer portal — built on the HeroCMS design tokens. */
.portal { min-height: 70vh; background: var(--bg); padding: var(--space-12) 0 var(--space-20); }
.portal__wrap { max-width: 60rem; margin: 0 auto; padding: 0 var(--space-6); }

.portal-head { margin-bottom: var(--space-8); }
.portal-h1 { font-family: var(--font-display); font-size: var(--text-3xl); font-weight: 500; letter-spacing: var(--tracking-tight); margin: var(--space-2) 0 0; }
.portal-h2 { font-family: var(--font-heading); font-size: var(--text-lg); font-weight: 600; margin: 0 0 var(--space-4); }
.portal-sub { color: var(--text-muted); font-size: var(--text-base); margin: var(--space-1) 0 var(--space-5); }

.portal-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--space-6); margin-bottom: var(--space-5); }
.portal-card--narrow { max-width: 30rem; margin: var(--space-8) auto; }
.portal-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-5); }
@media (max-width: 720px) { .portal-grid { grid-template-columns: 1fr; } }

.portal-form { display: flex; flex-direction: column; gap: var(--space-4); margin-top: var(--space-5); }
.portal-field { display: flex; flex-direction: column; gap: 6px; }
.portal-field span { font-family: var(--font-ui); font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.portal-field em { color: var(--text-subtle); font-weight: 400; font-style: normal; }
.portal-field input { width: 100%; font-family: var(--font-ui); font-size: var(--text-base); color: var(--text); background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius-md); padding: 10px 12px; }
.portal-field input:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring-shadow); }
.portal-form .hcms-btn { justify-content: center; margin-top: var(--space-1); }

.portal-alert { background: var(--danger-bg); color: var(--danger-fg); border: 1px solid color-mix(in srgb, var(--danger) 30%, transparent); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); font-size: var(--text-sm); margin-bottom: var(--space-2); }
.portal-alt { text-align: center; color: var(--text-muted); font-size: var(--text-sm); margin: var(--space-5) 0 0; }
.portal-hi, .mk-nav__login { white-space: nowrap; }

.portal-empty { border: 1px dashed var(--border-strong); border-radius: var(--radius-md); padding: var(--space-5); color: var(--text-muted); font-size: var(--text-sm); background: var(--surface-2); }
.portal-empty strong { color: var(--text); display: block; margin-bottom: 4px; font-family: var(--font-heading); }
.portal-empty p { margin: 0; }

.portal-dl { display: grid; grid-template-columns: auto 1fr; gap: 6px var(--space-4); margin: 0; font-size: var(--text-sm); }
.portal-dl dt { color: var(--text-subtle); font-family: var(--font-mono); font-size: var(--text-xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); align-self: center; }
.portal-dl dd { margin: 0; }

.portal-table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
.portal-table th, .portal-table td { text-align: left; padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--border-subtle); }
.portal-table th { font-family: var(--font-mono); font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-subtle); }
.portal-table .r { text-align: right; }

.portal-products { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--space-4); }
.portal-product { border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-4); display: flex; flex-direction: column; }
.portal-product__kind { font-family: var(--font-mono); font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--primary); }
.portal-product h3 { font-family: var(--font-heading); font-size: var(--text-md); font-weight: 600; margin: var(--space-2) 0; }
.portal-product p { color: var(--text-muted); font-size: var(--text-sm); margin: 0 0 var(--space-4); flex: 1; }
.portal-product__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.portal-price { font-family: var(--font-display); font-size: var(--text-lg); font-weight: 500; }

.portal-flash { border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); font-size: var(--text-sm); margin-bottom: var(--space-4); }
.portal-flash--ok { background: var(--success-bg); color: var(--success-fg); border: 1px solid color-mix(in srgb, var(--success) 25%, transparent); }
.portal-flash--err { background: var(--danger-bg); color: var(--danger-fg); border: 1px solid color-mix(in srgb, var(--danger) 25%, transparent); }
.portal-verify { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; background: var(--warning-bg); color: var(--warning-fg); border: 1px solid color-mix(in srgb, var(--warning) 30%, transparent); border-radius: var(--radius-md); padding: var(--space-4); margin-bottom: var(--space-5); font-size: var(--text-sm); }
.portal-verified { color: var(--success); font-size: var(--text-xs); font-family: var(--font-mono); }
.portal-key { font-family: var(--font-mono); font-size: var(--text-xl); letter-spacing: 1px; background: var(--surface-2); border: 1px dashed var(--border-strong); border-radius: var(--radius-md); padding: var(--space-4); margin: var(--space-5) 0; }

.portal-field textarea { width: 100%; font-family: var(--font-ui); font-size: var(--text-base); color: var(--text); background: var(--surface); border: 1px solid var(--border-strong); border-radius: var(--radius-md); padding: 10px 12px; resize: vertical; }
.portal-field textarea:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring-shadow); }

/* Admin dashboard */
.admin-tabs { display: flex; flex-wrap: wrap; gap: var(--space-1); border-bottom: 1px solid var(--border); margin-bottom: var(--space-6); }
.admin-tabs a { font-family: var(--font-ui); font-size: var(--text-sm); font-weight: 500; color: var(--text-muted); text-decoration: none; padding: 10px 14px; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.admin-tabs a:hover { color: var(--text); }
.admin-tabs a.is-active { color: var(--primary); border-bottom-color: var(--primary); }
.admin-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-4); margin-bottom: var(--space-5); }
.admin-stat { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--space-5); }
.admin-stat span { display: block; font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 500; }
.admin-stat label { font-family: var(--font-mono); font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-subtle); }
.admin-stat--accent span { color: var(--primary); }
.admin-prod { display: grid; grid-template-columns: 2fr 1fr auto; gap: var(--space-4); align-items: end; }
.admin-prod__desc { grid-column: 1 / -1; }
.admin-prod__name { grid-column: auto; }
.admin-check { display: flex; align-items: center; gap: 8px; font-family: var(--font-ui); font-size: var(--text-sm); font-weight: 500; white-space: nowrap; padding-bottom: 10px; }
.admin-prod__foot { display: flex; align-items: center; justify-content: space-between; margin-top: var(--space-4); gap: var(--space-3); }
@media (max-width: 640px) { .admin-prod { grid-template-columns: 1fr; } }

/* Checkout */
.checkout-steps { list-style: none; display: flex; gap: var(--space-2); padding: 0; margin: 0 0 var(--space-6); flex-wrap: wrap; }
.checkout-steps li { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-subtle); padding: 6px 12px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); }
.checkout-steps li.is-active { color: #fff; background: var(--primary); border-color: transparent; }
.checkout-steps li.is-done { color: var(--primary); border-color: color-mix(in srgb, var(--primary) 40%, transparent); }
.checkout-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: var(--space-5); align-items: start; }
@media (max-width: 760px) { .checkout-grid { grid-template-columns: 1fr; } }
.checkout-row { display: flex; gap: var(--space-3); }
.checkout-row .portal-field { flex: 1; }
.checkout-row .portal-field:first-child { flex: 0 0 8rem; }
.portal-field select {
  width: 100%; font-family: var(--font-ui); font-size: var(--text-base); color: var(--text);
  background-color: var(--surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6a66' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 14px;
  border: 1px solid var(--border-strong); border-radius: var(--radius-md);
  padding: 10px 40px 10px 12px; cursor: pointer;
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
}
.portal-field select:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring-shadow); }
.checkout-line { display: flex; justify-content: space-between; align-items: baseline; font-size: var(--text-base); }
.checkout-line strong { font-family: var(--font-display); font-size: var(--text-lg); }
.checkout-invoice { border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-5); background: var(--surface-2); }
.ci-parties { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); font-size: var(--text-sm); line-height: 1.5; margin-bottom: var(--space-5); }
.ci-parties h4 { font-family: var(--font-mono); font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-subtle); margin: 0 0 4px; }
.checkout-items { width: 100%; border-collapse: collapse; font-size: var(--text-sm); margin-bottom: var(--space-4); }
.checkout-items td { padding: 10px 0; border-top: 1px solid var(--border); }
.checkout-items .r { text-align: right; }
.checkout-totals { display: flex; flex-direction: column; gap: 4px; font-size: var(--text-sm); max-width: 16rem; margin-left: auto; }
.checkout-totals > div { display: flex; justify-content: space-between; }
.ct-grand { border-top: 2px solid var(--border-strong); padding-top: 8px; margin-top: 4px; font-family: var(--font-display); font-size: var(--text-lg); font-weight: 600; }
.checkout-methods { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-2); }
.method { display: flex; align-items: center; gap: var(--space-3); border: 1px solid var(--border-strong); border-radius: var(--radius-md); padding: 12px 14px; cursor: pointer; font-size: var(--text-sm); }
.method:has(input:checked) { border-color: var(--primary); box-shadow: var(--ring-shadow); }
.method input { accent-color: var(--primary); }
.checkout-methods .hcms-btn { justify-content: center; margin-top: var(--space-3); }
.portal-cta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; }

/* Breite Admin-Tabellen: horizontal scrollen statt Seite überlaufen zu lassen */
.portal-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.portal-scroll .portal-table { min-width: 32rem; }
