/* ═══════════════════════════════════════════════════════════════════════════
   style.css — Portal (PIN + Dashboard)
   ═══════════════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Figtree:wght@300;400;500;600;700&display=swap');

/* ── CSS-Variablen ────────────────────────────────────────────────────────── */
:root {
    --bg:          #f0f2f5;
    --bg-surface:  #ffffff;
    --bg-raised:   #f5f6f8;
    --border:      #dde1e9;

    --text:        #1a1d26;
    --text-dim:    #5a6074;
    --text-muted:  #9aa0b4;

    --accent:      #2c6ee8;
    --accent-dim:  #dce8fc;
    --red:         #d63b3b;

    --font-body:   'Figtree', system-ui, sans-serif;
    --font-mono:   'DM Mono', monospace;

    --radius:      10px;
    --radius-lg:   18px;
    --shadow:      0 2px 8px rgba(0,0,0,.07), 0 8px 32px rgba(0,0,0,.06);
    --transition:  160ms ease;
}

html.dark {
    --bg:          #0d0f12;
    --bg-surface:  #141720;
    --bg-raised:   #1c2030;
    --border:      #252a38;

    --text:        #e8eaf0;
    --text-dim:    #7a8099;
    --text-muted:  #4a5068;

    --accent:      #4f8ef7;
    --accent-dim:  #1d3a72;
    --red:         #f05252;

    --shadow:      0 2px 16px rgba(0,0,0,.45);
}

html { color-scheme: light; }
html.dark { color-scheme: dark; }

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-body);
    line-height: 1.5;
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
}

/* ═══════════════════════════════════════════════════════════════════════════
   PIN-Seite
   ═══════════════════════════════════════════════════════════════════════════ */
.pin-wrap {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.25rem;
    padding: 1.5rem;
}

.pin-card {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    padding: 1.1rem 1.25rem 1.25rem;
    width: 100%;
    max-width: 320px;
}

/* PIN-Punkte — gleiche Breite wie Tastenfeld */
.pin-display {
    display: flex;
    align-items: center;
    justify-content: space-around;
    width: 100%;        /* gleich breit wie .numpad */
    height: 20px;
    margin-bottom: .15rem;
    padding: 0 .1rem;
}

.pin-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 2px solid var(--border);
    background: transparent;
    transition: background var(--transition), border-color var(--transition), transform .12s ease;
    flex-shrink: 0;
}

.pin-dot.filled {
    background: var(--accent);
    border-color: var(--accent);
    transform: scale(1.15);
}

/* Confirm-Punkt: identisch mit anderen — kein Sonderaussehen */
.pin-dot-confirm {
    /* gleich wie normale Punkte */
}

.pin-dot-confirm.confirm-active {
    background: #1a9e6a;
    border-color: #1a9e6a;
    opacity: 1;
    transform: scale(1.2);
}

html.dark .pin-dot-confirm.confirm-active {
    background: #3ecf8e;
    border-color: #3ecf8e;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    20%       { transform: translateX(-6px); }
    40%       { transform: translateX(6px); }
    60%       { transform: translateX(-4px); }
    80%       { transform: translateX(4px); }
}
.pin-dot.shake { animation: shake .5s ease; border-color: var(--red); background: var(--red); }

/* Fehlermeldung */
.pin-error {
    font-size: .8rem;
    color: var(--red);
    font-weight: 500;
    height: .9rem;
    margin: .25rem 0 .3rem;
    transition: opacity var(--transition);
}

/* ── Numpad ──────────────────────────────────────────────────────────────── */
.numpad {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .65rem;
    width: 100%;
    margin-top: .1rem;
}

.num-btn {
    aspect-ratio: 1;
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    color: var(--text);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: var(--font-body);
    gap: .05rem;
    transition: background var(--transition), transform .08s ease, box-shadow var(--transition);
    user-select: none;
    -webkit-tap-highlight-color: transparent;
}

.num-btn:hover {
    background: var(--accent-dim);
    border-color: var(--accent);
}

.num-btn:active {
    transform: scale(.93);
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

.num-main {
    font-size: 1.4rem;
    font-weight: 600;
    line-height: 1;
}

.num-sub {
    font-size: .55rem;
    font-weight: 500;
    letter-spacing: .1em;
    color: var(--text-muted);
    line-height: 1;
    min-height: .7rem; /* Platz reservieren auch wenn leer */
    visibility: visible;
}

.num-btn .num-sub:blank,
.num-btn .num-sub:empty { visibility: hidden; }

.num-btn:active .num-sub { color: rgba(255,255,255,.7); }

.num-del {
    font-size: 1.2rem;
    color: var(--text-dim);
}

.num-empty { /* leere Zelle links von 0 */ }

/* Theme Toggle — ausserhalb der Card */
.theme-toggle {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: 20px;
    box-shadow: 0 1px 4px rgba(0,0,0,.06);
    color: var(--text-muted);
    cursor: pointer;
    font-size: .78rem;
    padding: .4rem .9rem;
    display: flex;
    align-items: center;
    gap: .4rem;
    transition: border-color var(--transition), color var(--transition);
}
.theme-toggle:hover { border-color: var(--accent); color: var(--accent); }


/* ═══════════════════════════════════════════════════════════════════════════
   Dashboard
   ═══════════════════════════════════════════════════════════════════════════ */
.dash-wrap {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem 3rem;
}

/* Header */
.dash-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.25rem 0 1.5rem;
    border-bottom: 1px solid var(--border);
    margin-bottom: 2rem;
}

.dash-logo {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: 1.1rem;
    color: var(--text-dim);
}

.dash-header-right {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.logout-btn {
    background: var(--bg-raised);
    border: 1px solid var(--border);
    border-radius: 6px;
    color: var(--text-dim);
    font-size: .8rem;
    font-weight: 500;
    padding: .35rem .8rem;
    text-decoration: none;
    transition: background var(--transition), color var(--transition);
}
.logout-btn:hover { background: rgba(214,59,59,.08); color: var(--red); border-color: var(--red); }

/* Grid */
.dash-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
}

/* Karten */
.dash-card {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.1rem 1.25rem;
    text-decoration: none;
    color: var(--text);
    transition: box-shadow var(--transition), transform var(--transition), border-color var(--transition);
}

.dash-card:hover {
    box-shadow: 0 4px 20px rgba(0,0,0,.12);
    transform: translateY(-2px);
    border-color: var(--accent);
}

.dash-card-icon {
    border-radius: 10px;
    font-size: 1.4rem;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.dash-card-body {
    flex: 1;
    min-width: 0;
}

.dash-card-title {
    font-size: .95rem;
    font-weight: 600;
    margin-bottom: .15rem;
}

.dash-card-desc {
    font-size: .78rem;
    color: var(--text-dim);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dash-card-arrow {
    color: var(--text-muted);
    font-size: 1rem;
    transition: transform var(--transition), color var(--transition);
    flex-shrink: 0;
}
.dash-card:hover .dash-card-arrow {
    transform: translateX(3px);
    color: var(--accent);
}

/* Footer */
.dash-footer {
    text-align: center;
    font-size: .72rem;
    color: var(--text-muted);
    padding: 2rem 0 .5rem;
    font-family: var(--font-mono);
}
