:root {
    --bg: #f4f5f7;
    --sidebar-bg: #1f2937;
    --sidebar-text: #d1d5db;
    --sidebar-active: #374151;
    --text: #111827;
    --border: #d1d5db;
    --primary: #2563eb;
    --error: #b91c1c;
    --error-bg: #fee2e2;
    --success: #15803d;
    --success-bg: #dcfce7;
    --warning: #92400e;
    --warning-bg: #fef3c7;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
    background: var(--bg);
    color: var(--text);
}

.layout { display: flex; min-height: 100vh; }

.sidebar {
    width: 220px;
    background: var(--sidebar-bg);
    color: var(--sidebar-text);
    display: flex;
    flex-direction: column;
    padding: 1.5rem 0;
    flex-shrink: 0;
}

.sidebar .brand { font-size: 1.3rem; font-weight: 700; color: #fff; padding: 0 1.5rem 1.5rem; }

.sidebar ul { list-style: none; margin: 0; padding: 0; flex: 1; }

.sidebar li a {
    display: block;
    padding: 0.75rem 1.5rem;
    color: var(--sidebar-text);
    text-decoration: none;
}

.sidebar li a:hover, .sidebar li a.active { background: var(--sidebar-active); color: #fff; }

.sidebar-footer { padding: 1rem 1.5rem; border-top: 1px solid #374151; }

.lang-switch a { color: var(--sidebar-text); margin-right: 0.5rem; text-decoration: none; }
.lang-switch a.active { color: #fff; font-weight: 700; }

.link-button {
    background: none;
    border: none;
    color: var(--sidebar-text);
    cursor: pointer;
    padding: 0.5rem 0;
    font-size: 1rem;
}

.content { flex: 1; padding: 2rem; max-width: 900px; }

h1 { margin-top: 0; }

.card-form {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 2rem;
    max-width: 500px;
}

.card-form label { display: flex; flex-direction: column; gap: 0.35rem; font-weight: 600; }

.card-form input[type=text], .card-form input[type=email], .card-form input[type=password],
.card-form input[type=number], .card-form select, .card-form textarea {
    padding: 0.6rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    font-size: 1rem;
    font-weight: normal;
}

.checkbox-label { flex-direction: row !important; align-items: center; gap: 0.5rem !important; }

.param-desc { font-weight: normal; color: #6b7280; }

button, .card-form button {
    background: var(--primary);
    color: #fff;
    border: none;
    padding: 0.7rem 1.2rem;
    border-radius: 6px;
    font-size: 1rem;
    cursor: pointer;
    align-self: flex-start;
}

.inline-group { display: flex; gap: 0.5rem; }
.inline-form { display: inline-flex; gap: 0.5rem; margin: 0.5rem 0; }

.data-table { width: 100%; border-collapse: collapse; background: #fff; margin-bottom: 1.5rem; }
.data-table th, .data-table td { text-align: left; padding: 0.6rem 0.8rem; border-bottom: 1px solid var(--border); }
.row-actions { display: flex; gap: 0.75rem; }
.row-actions a, .row-actions .link-button { color: var(--primary); text-decoration: none; background: none; border: none; cursor: pointer; padding: 0; font-size: 0.95rem; }

.alert { padding: 0.8rem 1rem; border-radius: 6px; margin-bottom: 1rem; }
.alert-error { background: var(--error-bg); color: var(--error); }
.alert-success { background: var(--success-bg); color: var(--success); }
.alert-warning { background: var(--warning-bg); color: var(--warning); }

.status-grid { display: flex; gap: 1rem; margin-bottom: 2rem; flex-wrap: wrap; }
.status-card { background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: 1rem 1.5rem; display: flex; flex-direction: column; gap: 0.4rem; }
.badge { padding: 0.2rem 0.6rem; border-radius: 12px; font-size: 0.85rem; width: fit-content; }
.badge-ok { background: var(--success-bg); color: var(--success); }
.badge-down { background: var(--error-bg); color: var(--error); }

.current-file { font-weight: normal; color: #6b7280; font-size: 0.9rem; }

.auth-page { display: flex; align-items: center; justify-content: center; min-height: 100vh; }
.auth-box { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 2.5rem; width: 340px; }
.auth-box h1 { margin: 0 0 0.25rem; font-size: 1.4rem; }
.auth-box h2 { margin: 0 0 1.5rem; font-size: 1.1rem; color: #6b7280; font-weight: 500; }
.auth-box form { display: flex; flex-direction: column; gap: 1rem; }
.auth-box label { display: flex; flex-direction: column; gap: 0.35rem; font-weight: 600; }
.auth-box input { padding: 0.6rem; border: 1px solid var(--border); border-radius: 6px; font-size: 1rem; }
.auth-box .lang-switch { margin-top: 1.5rem; text-align: center; }
.auth-box .lang-switch a { color: #6b7280; margin: 0 0.4rem; text-decoration: none; }
.auth-box .lang-switch a.active { color: var(--primary); font-weight: 700; }

/* --- /dispatch: linhas dinâmicas de entrega --- */
.entrega-linha { border: 1px solid var(--border); border-radius: 8px; padding: 0.75rem; margin-bottom: 0.6rem; }
.linha-principal { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }
.linha-principal input[type=text] { padding: 0.45rem; border: 1px solid var(--border); border-radius: 6px; font-size: 0.95rem; }
.linha-nome, .linha-notas { flex: 1; min-width: 120px; }
.linha-localidade { font-size: 0.85rem; color: #6b7280; min-width: 90px; }
.linha-localidade.ok { color: var(--success); }
.linha-localidade.erro { color: var(--error); }
.linha-contraintes-toggle { flex-direction: row !important; align-items: center; gap: 0.3rem !important; font-size: 0.9rem; white-space: nowrap; }
.linha-morada-wrap { position: relative; }
.linha-sugestoes {
    position: absolute; top: 100%; left: 0; right: 0; background: #fff; border: 1px solid var(--border);
    border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 20; max-height: 220px; overflow-y: auto;
}
.sugestao-item { padding: 0.5rem 0.75rem; cursor: pointer; font-size: 0.9rem; }
.sugestao-item:hover { background: var(--bg); }
.linha-contraintes-painel { margin-top: 0.6rem; padding-top: 0.6rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: 0.5rem; }
.linha-contraintes-painel .inline-group { flex-wrap: wrap; gap: 0.75rem; }
.linha-contraintes-painel label { font-weight: normal; font-size: 0.9rem; }
.icones-contraintes { font-size: 1rem; }
