/* ============================================================
 * KYC-Portal – Zugtrust Branding (Corporate Design aus Farbwerte.docx)
 * ============================================================ */

:root {
    --zugtrust-marine: #002F49;
    --zugtrust-petrol: #0372AC;
    --zugtrust-petrol-light: #2B8BC7;
    --gold: #B7A54E;
    --gold-dark: #9A8A3F;

    --text: #1A202C;
    --text-muted: #718096;
    --border: #E2E8F0;
    --border-soft: #EDF2F7;
    --bg: #FFFFFF;
    --bg-soft: #F7FAFC;

    --success: #38A169;
    --warning: #D69E2E;
    --danger: #E53E3E;

    --font-sans: "Aptos", "Segoe UI", "Inter", Arial, sans-serif;
    --font-display: "Aptos Display", "Aptos", "Segoe UI", Arial, sans-serif;

    --space-xs: 4px;
    --space-sm: 8px;
    --space-md: 16px;
    --space-lg: 24px;
    --space-xl: 32px;
    --space-2xl: 48px;

    --max: 860px;
}

* { box-sizing: border-box; }

body {
    font-family: var(--font-sans);
    font-size: 15px;
    color: var(--text);
    background: var(--bg-soft);
    margin: 0;
    padding: 0;
    line-height: 1.5;
}

.wrap {
    max-width: var(--max);
    margin: 0 auto;
    padding: 0 var(--space-lg);
}

/* ---------- Header ---------- */

.header {
    background: var(--zugtrust-marine);
    color: #fff;
    padding: var(--space-lg) 0;
    border-bottom: 3px solid var(--gold);
}

.header .wrap {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
}

.brand-logo {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    text-decoration: none;
    color: inherit;
}

.brand-logo:hover { text-decoration: none; }

.logo-img {
    height: 42px;
    width: auto;
    display: block;
}

.brand-mark {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #fff;
}

.brand-sub {
    font-size: 11px;
    color: rgba(255,255,255,0.7);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.meta-right .meta-text {
    color: rgba(255,255,255,0.8);
    font-size: 13px;
}

/* ---------- Main ---------- */

.main {
    padding: var(--space-2xl) var(--space-lg);
}

.panel {
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: var(--space-xl);
    margin-bottom: var(--space-lg);
}

h1 {
    font-family: var(--font-display);
    color: var(--zugtrust-marine);
    font-size: 26px;
    margin-top: 0;
    margin-bottom: var(--space-lg);
}

h2 {
    font-family: var(--font-display);
    color: var(--zugtrust-marine);
    font-size: 18px;
    margin-top: var(--space-lg);
    margin-bottom: var(--space-md);
}

p { margin: 0 0 var(--space-md) 0; }

a { color: var(--zugtrust-petrol); text-decoration: none; }
a:hover { text-decoration: underline; }

.muted { color: var(--text-muted); font-size: 13px; }

/* ---------- Buttons ---------- */

.cta, .btn-secondary {
    display: inline-block;
    padding: 10px 20px;
    border-radius: 3px;
    font-size: 14px;
    font-weight: 600;
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    font-family: inherit;
    transition: background 0.15s, border-color 0.15s;
}

.cta {
    background: var(--gold);
    color: #fff;
    border-color: var(--gold);
}
.cta:hover { background: var(--gold-dark); border-color: var(--gold-dark); text-decoration: none; }
.cta:disabled { opacity: 0.5; cursor: not-allowed; }

.btn-secondary {
    background: #fff;
    color: var(--zugtrust-marine);
    border-color: var(--border);
}
.btn-secondary:hover { border-color: var(--zugtrust-petrol); color: var(--zugtrust-petrol); }

.actions { margin-top: var(--space-lg); }
.actions-split { display: flex; justify-content: space-between; align-items: center; }
.actions-right { display: flex; gap: var(--space-sm); }

/* ---------- Step-Navigation ---------- */

.stepnav {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xs);
    border-bottom: 1px solid var(--border);
    margin-bottom: var(--space-lg);
    padding-bottom: var(--space-sm);
}

.stepnav .step {
    font-size: 12px;
    padding: 4px 10px;
    border-radius: 3px;
    background: var(--bg-soft);
    color: var(--text-muted);
    border: 1px solid var(--border);
    cursor: pointer;
    user-select: none;
}

.stepnav .step.active {
    background: var(--zugtrust-marine);
    color: #fff;
    border-color: var(--zugtrust-marine);
}

.stepnav .step.done {
    background: #fff;
    color: var(--zugtrust-petrol);
    border-color: var(--zugtrust-petrol);
}

/* ---------- Form-Felder ---------- */

.field {
    margin-bottom: var(--space-md);
}

.field label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 4px;
}

.field .help {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: 3px;
}

.field input[type="text"],
.field input[type="email"],
.field input[type="url"],
.field input[type="date"],
.field input[type="number"],
.field textarea,
.field select {
    width: 100%;
    padding: 8px 10px;
    font-size: 14px;
    font-family: inherit;
    border: 1px solid var(--border);
    border-radius: 3px;
    background: #fff;
    color: var(--text);
}

.field input:focus,
.field textarea:focus,
.field select:focus {
    outline: 0;
    border-color: var(--zugtrust-petrol);
    box-shadow: 0 0 0 2px rgba(3,114,172,0.15);
}

.field textarea { min-height: 90px; resize: vertical; }

.field.required label::after {
    content: " *";
    color: var(--danger);
}

.field.error input,
.field.error textarea,
.field.error select { border-color: var(--danger); }

.field.error .help { color: var(--danger); }

/* Checkboxes / Radios */

.check-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: var(--space-sm);
}

.check-row input { margin-top: 3px; }
.check-row label { font-weight: 400; margin: 0; }

/* Repeater (UBO-Liste) */

.repeater-item {
    border: 1px solid var(--border);
    border-left: 3px solid var(--gold);
    padding: var(--space-md);
    margin-bottom: var(--space-md);
    background: var(--bg-soft);
}

.repeater-item .item-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-sm);
    font-weight: 600;
    color: var(--zugtrust-marine);
}

.repeater-item .btn-remove {
    background: transparent;
    border: 0;
    color: var(--danger);
    cursor: pointer;
    font-size: 13px;
}

/* Notice-Block (Transparenzregister) */

.notice-block {
    background: #fff8e6;
    border: 1px solid var(--gold);
    border-left: 3px solid var(--gold);
    padding: var(--space-md);
    margin-bottom: var(--space-md);
    font-size: 14px;
    border-radius: 3px;
}

/* File-Upload */

.file-upload {
    border: 1px dashed var(--border);
    padding: var(--space-md);
    border-radius: 3px;
    background: var(--bg-soft);
}

.uploaded-list {
    font-size: 13px;
    margin-top: var(--space-sm);
}

.uploaded-list li {
    padding: 4px 0;
    color: var(--text-muted);
}

/* Save-Status */

.save-status {
    margin-top: var(--space-md);
    font-size: 12px;
}

.save-status.ok { color: var(--success); }
.save-status.err { color: var(--danger); }

/* ---------- Footer ---------- */

.footer {
    margin-top: var(--space-2xl);
    padding: var(--space-xl) 0;
    background: var(--zugtrust-marine);
    color: rgba(255,255,255,0.85);
    font-size: 13px;
}

.footer a { color: #fff; text-decoration: underline; text-decoration-color: rgba(255,255,255,0.4); }
.footer a:hover { text-decoration-color: #fff; }
.footer .muted { color: rgba(255,255,255,0.6); }
.footer .foot-brand { margin-bottom: var(--space-md); }
.footer .foot-sep { opacity: 0.4; margin: 0 4px; }
.footer .foot-links {
    display: flex; gap: 20px; margin-bottom: var(--space-md); font-size: 13px;
}
.footer .foot-meta { font-size: 12px; }

.eaddr { font-family: inherit; } /* Email ohne mailto-Link */

/* checkbox_link */
.check-row.has-link { align-items: flex-start; }
.check-row .inline-link {
    display: inline-block;
    margin-left: 6px;
    font-size: 12px;
    text-decoration: underline;
}

/* ---------- Responsive ---------- */

@media (max-width: 640px) {
    .header .wrap { flex-direction: column; align-items: flex-start; }
    .panel { padding: var(--space-lg); }
    .actions-split { flex-direction: column; gap: var(--space-md); align-items: stretch; }
    .actions-right { justify-content: flex-end; }
}
