:root {
    --azul:#1a3a5c; --azul-mid:#2356a0; --azul-lite:#e8eef7;
    --dorado:#c8973a; --dorado-lite:#fdf3e0;
    --verde:#1a7a4a; --verde-lite:#e6f4ed;
    --rojo:#b91c1c;
    --texto:#1e2535; --texto-mid:#4b5563; --texto-soft:#6b7280;
    --borde:#d1d9e6; --bg:#f4f6fb; --blanco:#ffffff;
    --radio-sm:6px; --radio-md:10px; --radio-lg:16px;
    --sombra-sm:0 1px 3px rgba(26,58,92,.08);
    --sombra-md:0 4px 16px rgba(26,58,92,.12);
    --sombra-lg:0 8px 32px rgba(26,58,92,.16);
    --trans:150ms ease;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Inter',system-ui,sans-serif;font-size:15px;line-height:1.6;color:var(--texto);background:var(--bg);min-height:100vh;display:flex;flex-direction:column;}
a{color:var(--azul-mid);text-decoration:none;}
a:hover{text-decoration:underline;}

/* Header */
.site-header{background:var(--azul);color:#fff;border-bottom:3px solid var(--dorado);position:sticky;top:0;z-index:100;box-shadow:var(--sombra-md);}
.site-header__inner{max-width:1100px;margin:0 auto;padding:0 1.5rem;height:64px;display:flex;align-items:center;justify-content:space-between;}
.site-header__brand{display:flex;align-items:center;gap:.75rem;}
.site-header__emblem{font-size:1.8rem;}
.site-header__org{font-weight:700;font-size:.95rem;line-height:1.2;}
.site-header__state{font-size:.78rem;opacity:.75;}
.site-header__nav{display:flex;gap:1.5rem;}
.site-header__nav a{color:rgba(255,255,255,.85);font-size:.88rem;font-weight:500;transition:color var(--trans);}
.site-header__nav a:hover{color:var(--dorado);text-decoration:none;}
.site-main{flex:1;}
.site-footer{background:var(--azul);color:rgba(255,255,255,.55);font-size:.8rem;padding:1rem 1.5rem;margin-top:3rem;}
.site-footer__inner{max-width:1100px;margin:0 auto;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;}

/* Hero */
.hero{padding:4rem 1.5rem;}
.hero__inner{max-width:960px;margin:0 auto;}
.hero__eyebrow{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--dorado);margin-bottom:.5rem;}
.hero__title{font-family:'Merriweather',Georgia,serif;font-size:2.5rem;line-height:1.2;color:var(--azul);margin-bottom:1rem;}
.hero__body{font-size:1rem;color:var(--texto-mid);max-width:500px;margin-bottom:2rem;}
.hero__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:3rem;}
.feat-card{background:var(--blanco);border:1px solid var(--borde);border-radius:var(--radio-md);padding:1.25rem;}
.feat-card span{font-size:1.6rem;display:block;margin-bottom:.4rem;}
.feat-card h3{font-size:.92rem;font-weight:700;color:var(--azul);margin-bottom:.3rem;}
.feat-card p{font-size:.82rem;color:var(--texto-soft);}

/* Formulario */
.form-container{max-width:860px;margin:2rem auto;padding:0 1.25rem 3rem;}
.form-header{text-align:center;padding:2.5rem 1rem 2rem;border-bottom:2px solid var(--azul-lite);margin-bottom:2rem;}
.form-header__icon{font-size:3rem;margin-bottom:.5rem;}
.form-header__title{font-family:'Merriweather',Georgia,serif;font-size:1.85rem;color:var(--azul);margin-bottom:.25rem;}
.form-header__sub{font-size:.87rem;color:var(--texto-soft);}
.form-section{background:var(--blanco);border:1px solid var(--borde);border-radius:var(--radio-lg);padding:1.75rem;margin-bottom:1.5rem;box-shadow:var(--sombra-sm);}
.form-section__title{font-size:1rem;font-weight:700;color:var(--azul);display:flex;align-items:center;gap:.6rem;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:2px solid var(--azul-lite);}
.num{background:var(--azul);color:#fff;font-size:.78rem;font-weight:700;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.form-group{margin-bottom:1.1rem;}
.form-row{display:flex;flex-direction:column;gap:1rem;}
.form-label{display:block;font-size:.84rem;font-weight:600;color:var(--texto);margin-bottom:.35rem;}
.form-label.required::after{content:" *";color:var(--rojo);}
.form-control{width:100%;padding:.55rem .85rem;font-size:.92rem;font-family:inherit;color:var(--texto);background:var(--blanco);border:1.5px solid var(--borde);border-radius:var(--radio-sm);transition:border-color var(--trans),box-shadow var(--trans);appearance:none;}
.form-control:focus{outline:none;border-color:var(--azul-mid);box-shadow:0 0 0 3px rgba(35,86,160,.15);}
.form-control--readonly{background:var(--bg);color:var(--texto-mid);cursor:default;}
.form-control--textarea{resize:vertical;min-height:160px;}
.form-hint{font-size:.78rem;color:var(--texto-soft);margin-top:.3rem;display:block;}
.form-error{color:var(--rojo);font-size:.78rem;display:block;margin-top:.25rem;}
select.form-control{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.2rem;}
select:disabled{background-color:var(--bg);cursor:not-allowed;opacity:.7;}

/* Radio cards */
.radio-group{display:flex;gap:1rem;flex-wrap:wrap;}
.radio-card{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:1rem 1.75rem;border:2px solid var(--borde);border-radius:var(--radio-md);cursor:pointer;transition:border-color var(--trans),background var(--trans);user-select:none;}
.radio-card input[type="radio"]{position:absolute;opacity:0;width:0;height:0;}
.radio-card:has(input:checked){border-color:var(--azul-mid);background:var(--azul-lite);}
.radio-card__icon{font-size:1.8rem;}
.radio-card__label{font-size:.88rem;font-weight:600;color:var(--azul);}

/* Panel */
.panel{margin-top:1rem;animation:fadeIn .2s ease;}
.panel__title{font-size:.92rem;font-weight:700;color:var(--azul);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem;background:var(--azul-lite);border:1.5px solid var(--borde);border-radius:var(--radio-md);padding:1rem 1.25rem;}
.badge-opt{font-size:.72rem;font-weight:500;background:var(--dorado-lite);color:var(--dorado);border:1px solid var(--dorado);border-radius:20px;padding:.1rem .5rem;}

/* Evidencias */
.evidencias-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;}
.ev-card{background:var(--blanco);border:1.5px solid var(--borde);border-radius:var(--radio-md);padding:1rem;transition:border-color var(--trans);}
.ev-card__head{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:1.3rem;}
.ev-card__label{font-size:.87rem;font-weight:600;color:var(--texto);}
.ev-card__toggle{display:flex;gap:.5rem;margin-bottom:.75rem;}
.tog{display:flex;align-items:center;gap:.3rem;padding:.3rem .85rem;border:1.5px solid var(--borde);border-radius:20px;cursor:pointer;font-size:.82rem;font-weight:500;color:var(--texto-mid);transition:all var(--trans);user-select:none;}
.tog input{position:absolute;opacity:0;width:0;height:0;}
.tog:has(input[value="true"]:checked){border-color:var(--azul-mid);background:var(--azul);color:#fff;}
.tog:has(input[value="false"]:checked){border-color:var(--borde);background:var(--bg);}
.drop-zone{border:2px dashed var(--borde);border-radius:var(--radio-sm);padding:1rem;text-align:center;background:var(--bg);cursor:pointer;transition:border-color var(--trans),background var(--trans);position:relative;}
.drop-zone--over{border-color:var(--azul-mid);background:var(--azul-lite);}
.drop-zone__input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;}
.drop-zone__prompt{display:flex;flex-direction:column;align-items:center;gap:.2rem;pointer-events:none;font-size:.8rem;color:var(--texto-mid);}
.drop-zone__prompt small{font-size:.72rem;color:var(--texto-soft);}
.file-list{list-style:none;margin-top:.5rem;text-align:left;}
.file-list li{font-size:.78rem;color:var(--texto-mid);padding:.2rem 0;border-bottom:1px solid var(--borde);}
.mt-1{margin-top:.75rem;}

/* Botones */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.4rem;font-size:.9rem;font-weight:600;font-family:inherit;border:none;border-radius:var(--radio-sm);cursor:pointer;text-decoration:none;transition:all var(--trans);}
.btn--primary{background:var(--azul);color:#fff;}
.btn--primary:hover{background:var(--azul-mid);color:#fff;text-decoration:none;}
.btn--ghost{background:transparent;color:var(--azul);border:1.5px solid var(--borde);}
.btn--ghost:hover{background:var(--bg);text-decoration:none;}
.btn--lg{padding:.85rem 2rem;font-size:1rem;}
.btn--sm{padding:.3rem .75rem;font-size:.8rem;}
.btn--danger{background:#fee2e2;color:var(--rojo);border:1px solid #fca5a5;}
.btn--warn{background:#fef3c7;color:#92400e;border:1px solid #fde68a;}
.btn--success{background:var(--verde-lite);color:var(--verde);border:1px solid #6ee7b7;}
.form-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem;flex-wrap:wrap;}

/* Alertas */
.alert{padding:.75rem 1rem;border-radius:var(--radio-sm);font-size:.88rem;margin-bottom:1rem;}
.alert--ok{background:var(--verde-lite);color:var(--verde);border:1px solid #6ee7b7;}
.alert--error{background:#fee2e2;color:var(--rojo);border:1px solid #fca5a5;}

/* Confirmación */
.confirm-wrap{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem;}
.confirm-card{background:var(--blanco);border:1px solid var(--borde);border-radius:var(--radio-lg);padding:2.5rem;max-width:560px;width:100%;text-align:center;box-shadow:var(--sombra-lg);}
.confirm-check{font-size:4rem;margin-bottom:1rem;}
.confirm-title{font-family:'Merriweather',Georgia,serif;font-size:1.4rem;color:var(--verde);margin-bottom:.5rem;}
.confirm-sub{color:var(--texto-soft);margin-bottom:1.5rem;font-size:.9rem;}
.confirm-folio{background:var(--verde-lite);border:2px solid var(--verde);border-radius:var(--radio-md);padding:1rem;margin-bottom:1.5rem;display:flex;flex-direction:column;gap:.25rem;}
.confirm-folio__lbl{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--verde);}
.confirm-folio__num{font-size:2.2rem;font-weight:800;color:var(--azul);letter-spacing:.1em;}
.confirm-dl{text-align:left;border:1px solid var(--borde);border-radius:var(--radio-md);overflow:hidden;margin-bottom:1.5rem;}
.confirm-dl__row{display:flex;justify-content:space-between;gap:1rem;padding:.6rem .85rem;font-size:.84rem;border-bottom:1px solid var(--borde);}
.confirm-dl__row:last-child{border-bottom:none;}
.confirm-dl__row dt{color:var(--texto-soft);flex-shrink:0;}
.confirm-dl__row dd{font-weight:500;text-align:right;}
.confirm-actions{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem;}
.confirm-note{font-size:.8rem;color:var(--texto-soft);background:var(--dorado-lite);border-radius:var(--radio-sm);padding:.6rem 1rem;}

/* Checkbox */
.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.88rem;}

/* Login */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--azul);padding:2rem 1rem;}
.login-card{background:var(--blanco);border-radius:var(--radio-lg);padding:2.5rem;max-width:400px;width:100%;box-shadow:var(--sombra-lg);}
.login-logo{font-size:3.5rem;text-align:center;margin-bottom:.5rem;}
.login-title{font-family:'Merriweather',Georgia,serif;font-size:1.4rem;color:var(--azul);text-align:center;margin-bottom:.25rem;}
.login-sub{font-size:.82rem;color:var(--texto-soft);text-align:center;margin-bottom:1.75rem;}

@keyframes fadeIn{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
@media(min-width:600px){.form-row--two{flex-direction:row;}.form-row--two .form-group{flex:1;}}
@media(max-width:600px){.hero__title{font-size:1.8rem;}.form-section{padding:1.25rem 1rem;}.form-actions{flex-direction:column-reverse;}.btn{width:100%;justify-content:center;}.confirm-card{padding:1.5rem 1rem;}.site-header__nav{display:none;}}

/* ── Hero split (logo TDJ) ─────────────────────── */
.hero__inner--split {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    max-width: 960px;
    margin: 0 auto;
    padding: 3rem 1.5rem 1.5rem;
}

.hero__content {
    flex: 1;
    min-width: 0;
}

.hero__logo {
    flex-shrink: 0;
    width: 280px;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .hero__logo img {
        width: 100%;
        height: auto;
        max-width: 280px;
    }

.hero__cards-wrap {
    max-width: 960px;
    margin: 0 auto;
    padding: 0 1.5rem 3rem;
}

@media (max-width: 700px) {
    .hero__inner--split {
        flex-direction: column;
        text-align: center;
    }

    .hero__logo {
        width: 180px;
    }

    .hero__content .btn {
        width: 100%;
        justify-content: center;
    }
}

/* ── Aviso de denuncia anónima ────────────────────── */
.notice-box {
    display: flex;
    gap: .85rem;
    background: #fdf3e0;
    border: 1.5px solid #c8973a;
    border-radius: 10px;
    padding: 1.1rem 1.25rem;
    margin-bottom: 1.5rem;
}

.notice-box--compact {
    margin-bottom: 1.25rem;
    padding: .85rem 1rem;
}

.notice-box__icon {
    font-size: 1.4rem;
    flex-shrink: 0;
}

.notice-box__content h3 {
    font-size: .92rem;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 .5rem;
}

.notice-box__content p {
    font-size: .85rem;
    color: #4b5563;
    line-height: 1.6;
    margin: 0 0 .5rem;
}

    .notice-box__content p:last-child {
        margin-bottom: 0;
    }

/* ── Subtítulo dentro de una sección (Exposición de hechos) ── */
.subform-title {
    font-size: .92rem;
    font-weight: 700;
    color: #1a3a5c;
    margin: 1.25rem 0 .85rem;
    padding-top: .85rem;
    border-top: 1px dashed #d1d9e6;
}

/* ── Folio anónimo en página de confirmación ──────── */
.confirm-folio--anon {
    background: #fdf3e0;
    border: 2px solid #c8973a;
}

    .confirm-folio--anon .confirm-folio__lbl {
        color: #92400e;
    }

.confirm-folio__anon-text {
    font-size: 1rem;
    font-weight: 700;
    color: #1a3a5c;
}

.confirm-note--anon {
    background: #fdf3e0;
    border: 1px solid #c8973a;
    color: #92400e;
}

/* ── Badge "Todos obligatorios" (Persona Moral) ──── */
.badge-req {
    font-size: .72rem;
    font-weight: 600;
    background: #fef2f2;
    color: #b91c1c;
    border: 1px solid #fca5a5;
    border-radius: 20px;
    padding: .1rem .6rem;
    margin-left: .5rem;
}

/* ── Descripción bajo el label de radio-card ─────── */
.radio-card__desc {
    font-size: .72rem;
    color: var(--texto-soft);
    text-align: center;
    max-width: 120px;
    line-height: 1.3;
}

/* ── Notice-box variantes ────────────────────────── */
.notice-box--confidencial {
    background: #f0f4ff;
    border-color: #6366f1;
}

    .notice-box--confidencial .notice-box__icon {
        filter: none;
    }

    .notice-box--confidencial .notice-box__content p {
        color: #3730a3;
    }

.notice-box--anonima {
    background: #fff7ed;
    border-color: #f97316;
}

    .notice-box--anonima .notice-box__content p {
        color: #9a3412;
    }

/* ── Badge de tipo denuncia en listado admin ─────── */
.tipo-badge-normal {
    background: #e8eef7;
    color: #2356a0;
    border: 1px solid #bfdbfe;
}

.tipo-badge-confidencial {
    background: #eef2ff;
    color: #4338ca;
    border: 1px solid #c7d2fe;
}

.tipo-badge-anonima {
    background: #fff7ed;
    color: #c2410c;
    border: 1px solid #fed7aa;
}

.tipo-denuncia-badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: .72rem;
    font-weight: 600;
    padding: .2rem .55rem;
    border-radius: 20px;
    white-space: nowrap;
}