/*
 * Beta-Portal additions on top of btx-ng-ui.
 *
 * Deliberately small: components (.btn, .form-input, .table) come from
 * btx-ng-ui, this file only lays out the portal and admin pages.
 * Colours reference the btx-ng-ui design tokens, never literals.
 * NG look: square corners everywhere, IBM Plex Serif for display type.
 */

.beta-body {
    margin: 0;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    background: var(--color-cream);
    color: var(--color-forest-900);
    font-family: var(--font-body);
    -webkit-text-size-adjust: 100%;
}

/* ---------- Topbar ---------- */

.beta-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .85rem 1rem;
    padding-top: calc(.85rem + env(safe-area-inset-top));
    background: var(--color-forest-900);
    border-bottom: 4px solid var(--color-lime);
}

.beta-topbar-brand {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    text-decoration: none;
}

.beta-logo {
    display: block;
    height: 1.75rem;
    width: auto;
    max-width: 55vw;
}

.beta-topbar-form {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin: 0;
}

/* Ghost-Buttons sind für helle Flächen gedacht — in der dunklen Topbar
   bekommen sie Cream-Text und eine dezente helle Kontur. */
.beta-topbar-form .btn {
    color: var(--color-cream);
    border: 1px solid color-mix(in srgb, var(--color-cream) 40%, transparent);
    background: transparent;
}

.beta-topbar-form .btn:hover {
    border-color: var(--color-lime);
    color: var(--color-lime);
}

.beta-topbar-user {
    font-size: .75rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 10rem;
    color: color-mix(in srgb, var(--color-cream) 70%, transparent);
}

/* ---------- Layout ---------- */

.beta-main {
    flex: 1;
    width: 100%;
    max-width: 46rem;
    margin: 0 auto;
    padding: 1.5rem 1rem 3rem;
}

.beta-footer {
    padding: 1rem;
    text-align: center;
    font-size: .7rem;
    color: color-mix(in srgb, var(--color-forest-900) 45%, transparent);
}

.beta-heading {
    margin: 0 0 .5rem;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 1.6rem;
}

.beta-section-heading {
    margin: 0 0 .75rem;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 1.15rem;
}

.beta-intro {
    margin: 0 0 1.25rem;
    font-size: .9rem;
    line-height: 1.5;
    color: var(--color-forest-700);
}

/* ---------- Cards ---------- */

.beta-card {
    background: #fff;
    border: 1px solid color-mix(in srgb, var(--color-forest-900) 12%, transparent);
    padding: 1.25rem;
    margin-bottom: 1.25rem;
}

.beta-card-narrow {
    max-width: 26rem;
    margin: 3rem auto 0;
}

/* ---------- Login ---------- */

.beta-code-input {
    font-family: var(--font-mono);
    letter-spacing: .12em;
    text-transform: uppercase;
}

.beta-submit {
    width: 100%;
    margin-top: 1rem;
}

.beta-form-error {
    margin: 0 0 1rem;
    padding: .6rem .75rem;
    background: color-mix(in srgb, var(--color-danger) 8%, #fff);
    border-left: 4px solid var(--color-danger);
}

/* ---------- Releases (portal) ---------- */

.beta-release-header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .5rem .75rem;
    margin-bottom: .75rem;
}

.beta-release-name {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 1.25rem;
}

.beta-badge {
    padding: .15rem .5rem;
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    background: var(--color-lime);
    color: var(--color-forest-900);
}

.beta-release-date {
    margin-left: auto;
    font-size: .75rem;
    color: color-mix(in srgb, var(--color-forest-900) 55%, transparent);
}

.beta-changelog {
    margin-bottom: 1rem;
    font-size: .9rem;
    line-height: 1.55;
}

.beta-changelog p {
    margin: 0 0 .5rem;
}

.beta-changelog ul {
    margin: 0 0 .5rem;
    padding-left: 1.2rem;
    list-style: disc; /* Tailwind-Reset setzt list-style: none */
}

.beta-changelog li {
    margin-bottom: .2rem;
}

.beta-files {
    margin: 0;
    padding: 0;
    list-style: none;
}

.beta-file {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .6rem 0;
    border-top: 1px solid color-mix(in srgb, var(--color-forest-900) 10%, transparent);
}

.beta-file-name {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: anywhere;
    font-family: var(--font-mono);
    font-size: .8rem;
}

.beta-file-size {
    flex: 0 0 auto;
    font-size: .75rem;
    color: color-mix(in srgb, var(--color-forest-900) 55%, transparent);
}

.beta-empty {
    margin: 0;
    font-size: .9rem;
    color: color-mix(in srgb, var(--color-forest-900) 55%, transparent);
}

/* ---------- Admin ---------- */

.beta-flash {
    margin: 0 0 1rem;
    padding: .6rem .75rem;
    font-size: .9rem;
    background: color-mix(in srgb, var(--color-lime) 15%, #fff);
    border-left: 4px solid var(--color-lime);
}

.beta-flash-error {
    background: color-mix(in srgb, var(--color-danger) 8%, #fff);
    border-left-color: var(--color-danger);
}

.beta-access-form-fields {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .75rem;
}

.beta-field {
    flex: 1 1 14rem;
}

.beta-field-days {
    flex: 0 1 7rem;
}

.beta-table-wrap {
    overflow-x: auto;
}

.beta-table {
    width: 100%;
    min-width: 640px; /* lieber scrollen (.beta-table-wrap) als Spalten quetschen */
    font-size: .85rem;
}

.beta-table th,
.beta-table td {
    padding-right: .75rem;
}

.beta-code {
    font-family: var(--font-mono);
    font-size: .8rem;
    white-space: nowrap;
    background: var(--color-sand);
    padding: .1rem .35rem;
}

.beta-status {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.beta-status-on {
    color: var(--color-lime-dark);
}

.beta-status-off {
    color: color-mix(in srgb, var(--color-forest-900) 50%, transparent);
}

.beta-actions form {
    display: inline;
    margin: 0;
}
