/* 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; } }
