:root{--bg:#f4f6f8;--card:#fff;--text:#17202a;--muted:#68737d;--line:#e2e6ea;--primary:#175cd3;--green:#168a4a;--red:#c9362b;--amber:#b7791f;--shadow:0 4px 18px rgba(20,30,40,.07)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.topbar{height:64px;background:#111827;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100% - 1180px)/2));position:sticky;top:0;z-index:10}.brand a,.topbar nav a{color:#fff;text-decoration:none}.brand{font-weight:700;font-size:18px}.topbar nav{display:flex;gap:18px}.container{max-width:1180px;margin:0 auto;padding:28px 18px}.footer{text-align:center;color:var(--muted);padding:28px}.page-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:20px}.page-head h1{margin:4px 0;font-size:32px}.muted{color:var(--muted)}.month-nav{display:flex;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;color:var(--text);padding:9px 13px;border-radius:9px;text-decoration:none;cursor:pointer;font-weight:600}.btn:hover{filter:brightness(.98)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.whatsapp{background:#1aa260;border-color:#1aa260;color:#fff}.btn.small{padding:7px 9px;font-size:12px}.btn.full{width:100%;margin-top:8px}.calendar-list{display:grid;gap:9px}.week-card{display:grid;grid-template-columns:120px 1fr 240px 28px;align-items:center;gap:15px;background:var(--card);border:1px solid var(--line);border-left:6px solid var(--green);border-radius:12px;padding:14px 16px;text-decoration:none;color:inherit;box-shadow:var(--shadow)}.week-card.open{border-left-color:var(--red)}.week-card:hover{transform:translateY(-1px)}.date strong,.date span{display:block}.date span{font-size:13px;color:var(--muted);margin-top:2px}.week-main strong,.week-main span{display:block}.week-main span{color:var(--muted);font-size:13px}.mini-meta{font-size:12px;color:var(--muted)}.chev{font-size:26px;color:#9aa4ad}.grid2{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:var(--shadow);margin-bottom:16px}.hero-panel{border-top:5px solid var(--primary)}.panel-label{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--muted);margin-bottom:8px}.panel h2{font-size:27px;margin:3px 0}.talk-big,.talk-number{font-size:16px;font-weight:800;color:var(--primary)}.panel h3{margin:5px 0 14px}.inline-form{display:flex;gap:8px}.inline-form select{flex:1}.talk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.talk-chip{border:1px solid var(--line);border-radius:9px;padding:10px}.talk-chip b{display:inline-block;min-width:34px}.talk-chip span{color:var(--muted);font-size:13px}.back{color:var(--primary);text-decoration:none}.candidate-list{display:grid;gap:12px}.candidate{display:grid;grid-template-columns:46px 1fr 170px;gap:14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow)}.candidate.top{border-left:5px solid var(--primary)}.rank{font-size:22px;font-weight:800;color:var(--muted);text-align:center}.cand-main h2{margin:0 0 6px;font-size:20px}.badges{display:flex;flex-wrap:wrap;gap:6px}.badges span{background:#eef2f6;border-radius:99px;padding:3px 8px;font-size:12px}.reasons{margin:8px 0 0;color:var(--muted);font-size:13px}.score{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:7px}.score>b{font-size:22px}.score small{color:var(--muted)}.score form{margin:0}.flash{padding:12px 14px;border-radius:10px;margin-bottom:18px}.flash.ok{background:#e7f7ee;color:#12643a}.flash.error{background:#fdecea;color:#9f2118}.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#eef3f9,#f8fafc)}.login-card{width:min(420px,calc(100% - 32px));background:#fff;padding:32px;border-radius:18px;box-shadow:0 15px 45px rgba(20,30,40,.12)}.login-card h1{text-align:center;margin:0}.login-card .muted{text-align:center}.logo{text-align:center;font-size:40px;margin-bottom:8px}label{display:block;font-weight:700;margin:15px 0}input,select{width:100%;padding:10px 11px;border:1px solid #ccd3da;border-radius:9px;background:#fff;font:inherit;margin-top:6px}.setup-hint{font-size:13px;color:var(--muted);text-align:center;margin-top:18px}.setup-hint a{color:var(--primary)}@media(max-width:760px){.topbar{padding:0 14px}.container{padding:20px 12px}.page-head{align-items:flex-start;flex-direction:column}.month-nav{width:100%}.month-nav .btn{flex:1}.week-card{grid-template-columns:72px 1fr 22px;padding:12px}.mini-meta{display:none}.grid2{grid-template-columns:1fr}.candidate{grid-template-columns:30px 1fr}.score{grid-column:2;align-items:flex-start;text-align:left;flex-direction:row;flex-wrap:wrap}.talk-grid{grid-template-columns:1fr}}

.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.admin-card{display:block;padding:24px;border:1px solid #e5e7eb;border-radius:16px;background:#fff;text-decoration:none;color:inherit;box-shadow:0 3px 12px rgba(0,0,0,.04)}.admin-card b{display:block;font-size:20px;margin-bottom:8px}.admin-card span{color:#64748b}.searchbar{display:flex;gap:10px;margin:0 0 18px}.searchbar input{flex:1}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:11px 10px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:top}.badge{display:inline-block;padding:3px 8px;border-radius:999px;background:#eef2ff;margin:2px;font-size:12px}.local-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}.check-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.check-list label{padding:7px 5px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea,.searchbar input{width:100%;box-sizing:border-box;padding:10px;border:1px solid #d1d5db;border-radius:9px}.role-badges{display:flex;flex-wrap:wrap;gap:5px}@media(max-width:800px){.local-grid,.form-grid{grid-template-columns:1fr}.check-list{grid-template-columns:1fr}}
.role-select{width:100%;min-height:190px;padding:8px;border:1px solid #ccd3da;border-radius:9px;background:#fff;font:inherit}
.role-select option{padding:7px 8px}
.role-check-list{display:flex;flex-direction:column;gap:8px;margin:10px 0}.role-check-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.role-check-item input{width:18px;height:18px}.role-check-item span{font-weight:600}.role-panel .role-select{width:100%;margin-top:7px}


/* Ficha de hermano - edición de discursos disponibles */
.section-intro{margin:-4px 0 18px;color:#667085;line-height:1.5}
.inline-form{display:flex;align-items:end;gap:12px;margin:0 0 18px}
.inline-form label{max-width:180px}
.talk-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px 14px;max-height:620px;overflow:auto;padding:12px;border:1px solid #d8dee8;border-radius:12px;background:#fafbfc}
.talk-edit-item{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:8px;background:#fff}
.talk-edit-item input{margin-top:3px;flex:0 0 auto}
.talk-edit-item b{display:inline-block;min-width:32px}
.notice.warning{padding:14px 16px;border:1px solid #e5c46a;background:#fff8df;border-radius:10px;color:#795b00}
.small{font-size:.92rem}

/* Discursos disponibles — interfaz moderna y compacta */
.section-intro{color:var(--muted);font-size:14px;line-height:1.55;margin:-2px 0 18px;max-width:900px}.brother-year-form{max-width:180px;margin-bottom:18px}.brother-year-form label{width:100%;margin:0}.talks-summary-head,.talk-picker-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:8px}.talks-summary-head h3,.talk-picker-head h3{margin:0 0 3px;font-size:18px}.talks-summary-head p{margin:0;color:var(--muted);font-size:13px}.talk-count{display:grid;place-items:center;min-width:42px;height:42px;padding:0 12px;border-radius:999px;background:#eaf1ff;color:var(--primary);font-size:18px}.selected-talks{display:flex;flex-wrap:wrap;gap:8px;min-height:62px;margin:12px 0 24px;padding:12px;border:1px solid #dbe3ee;border-radius:12px;background:#f8fafc}.selected-empty{width:100%;display:flex;align-items:center;min-height:36px;color:var(--muted);font-size:14px}.selected-talk{display:inline-flex;align-items:center;gap:8px;max-width:100%;border:1px solid #cbd8ef;border-radius:10px;background:#fff;color:var(--text);padding:7px 10px;cursor:pointer;font:inherit;text-align:left}.selected-talk:hover{border-color:var(--primary);background:#f5f8ff}.selected-talk-number{font-weight:800;color:var(--primary);min-width:30px}.selected-talk-remove{font-size:19px;line-height:1;color:#8793a0;margin-left:2px}.talk-picker-head{margin-bottom:10px}.talk-search{position:relative;width:min(360px,100%);margin:0}.talk-search>span{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:15px;z-index:1}.talk-search input{margin:0;padding-left:35px;width:100%}.talk-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:560px;overflow:auto;padding:10px;border:1px solid #dbe3ee;border-radius:12px;background:#f8fafc}.talk-picker-item{display:grid;grid-template-columns:22px 42px 1fr;align-items:start;gap:8px;margin:0;padding:9px 10px;border:1px solid #e5e9ef;border-radius:9px;background:#fff;cursor:pointer;font-weight:400}.talk-picker-item:hover{border-color:#b8c9e8;background:#fbfdff}.talk-picker-item input{width:18px;height:18px;margin:2px 0 0}.talk-picker-number{font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums}.talk-picker-title{color:var(--text);font-size:13px;line-height:1.35}.talk-no-results{grid-column:1/-1;padding:28px;text-align:center;color:var(--muted)}.talks-actions{display:flex;justify-content:flex-end;margin-top:16px}.talk-picker-item[hidden]{display:none!important}
@media(max-width:800px){.talks-summary-head,.talk-picker-head{align-items:flex-start;flex-direction:column}.talk-search{width:100%}.talk-picker{grid-template-columns:1fr;max-height:520px}.talks-actions{justify-content:stretch}.talks-actions .btn{width:100%}}
.contact-status{display:flex;flex-direction:column;align-items:flex-end;background:#f3f6f8;border-radius:8px;padding:5px 8px;font-size:11px}.contact-status span{color:var(--muted)}
.modal-backdrop{position:fixed;inset:0;background:rgba(17,24,39,.48);display:grid;place-items:center;padding:20px;z-index:100}.modal-backdrop[hidden]{display:none}.modal-card{width:min(680px,100%);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:16px;box-shadow:0 20px 70px rgba(0,0,0,.25);padding:22px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.modal-head h2{margin:2px 0 16px}.modal-close{border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer;color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.month-pick{margin:12px 0 16px}.month-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}.month-grid label{margin:0;font-weight:500;display:flex;align-items:center;gap:6px;background:#f5f7f9;padding:7px 8px;border-radius:8px;cursor:pointer}.month-grid input{width:auto;margin:0}.modal-open{overflow:hidden}.contact-history{display:grid;gap:10px}.contact-entry{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fafbfc}.contact-entry-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:7px}.contact-entry-head span{color:var(--muted);font-size:12px}.contact-box{background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px;margin-top:9px}.contact-box p,.contact-preview{margin:5px 0 0;white-space:normal}.contact-history.compact{margin-bottom:10px}.contact-history.compact .contact-entry{padding:10px}.contact-preview{font-size:13px;color:#4b5563}.small{font-size:12px}
@media(max-width:760px){.month-grid{grid-template-columns:repeat(3,1fr)}.modal-card{padding:17px}.score .contact-status{align-items:flex-start}}

.future-commitment{display:inline-block;margin-top:8px;padding:5px 9px;border-radius:8px;background:#fff4df;color:#8a5a00;font-size:12px}.future-commitment strong{font-weight:800}@media(max-width:760px){.future-commitment{font-size:11px}}

.manual-search-panel{margin-bottom:18px}.manual-results{margin-top:12px;border-top:1px solid #e5e7eb;padding-top:10px}.manual-result{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #eef0f2}.manual-result:last-child{border-bottom:0}.same-month-panel{margin-bottom:18px}.same-month-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px;margin-top:12px}.same-month-item{padding:10px 12px;border:1px solid #e5e7eb;border-radius:10px;background:#fafafa}.same-month-item .muted{display:block;margin-top:3px}@media(max-width:700px){.manual-result{align-items:flex-start;flex-direction:column}.manual-result .btn{width:100%}}
.talk-select-form{margin-top:16px;padding-top:14px;border-top:1px solid #e5e7eb;display:grid;gap:10px}.talk-select-form select{width:100%}.talk-select-form .btn{justify-self:start}
.reconcile-row select{width:100%}
@media(max-width:800px){.reconcile-row>div{grid-template-columns:1fr!important}.reconcile-row .btn{width:100%}}

/* Seguimiento de contactos */
.contact-status{min-width:170px;text-align:right}.contact-status strong{font-size:12px}.contact-status.sent{background:#e9f8ef;border:1px solid #bce8cd;color:#176b3a}.contact-status.previous{background:#fff7e5;border:1px solid #f0d89a;color:#805b08}.contact-status.none{background:#f5f7f9;border:1px solid #e3e7eb;color:#667085}.contact-filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr auto;gap:12px;align-items:end}.contact-filters label{margin:0;font-size:13px}.filter-actions{display:flex;gap:8px}.followup-alert{margin-top:14px;padding:11px 13px;border-radius:9px;background:#fff4df;border:1px solid #f0d89a;color:#805b08}.contact-table-wrap{overflow:auto}.contact-table{min-width:980px}.contact-table td{vertical-align:top}.contact-badge{display:inline-block;padding:3px 7px;border-radius:999px;background:#eef2ff;font-size:11px;font-weight:700}.contact-table details{margin:0 0 4px}.contact-table summary{cursor:pointer;color:var(--primary);font-size:12px;font-weight:700}.contact-preview{max-width:360px;white-space:normal;line-height:1.4;margin-top:5px}.btn.small{padding:7px 9px;font-size:12px}@media(max-width:1000px){.contact-filters{grid-template-columns:1fr 1fr}.contact-filters label:first-child{grid-column:1/-1}}@media(max-width:760px){.contact-filters{grid-template-columns:1fr}.filter-actions{width:100%}.filter-actions .btn{flex:1}.contact-status{min-width:0;text-align:left;align-items:flex-start!important;width:100%}}

/* Recordatorios */
.reminder-list{display:grid;gap:10px}.reminder-card{display:flex;justify-content:space-between;gap:18px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:15px;background:#fff}.reminder-card.compact{padding:12px 15px}.reminder-card h2,.reminder-card h3{margin:3px 0 4px}.reminder-date{font-size:12px;color:var(--muted);font-weight:700}.reminder-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.reminder-badge{display:inline-flex;padding:6px 9px;border-radius:999px;background:#fff4df;border:1px solid #f0d89a;color:#805b08;font-size:12px;font-weight:700}.reminder-badge.sent{background:#e9f8ef;border-color:#bce8cd;color:#176b3a}.reminder-card.overdue{border-color:#e7b6b6;background:#fffafa}.reminder-card p{margin:4px 0}.reminder-card.compact h3{font-size:17px}@media(max-width:760px){.reminder-card{flex-direction:column;align-items:stretch}.reminder-actions{justify-content:flex-start}.reminder-actions .btn{width:100%}.reminder-actions .reminder-badge{width:max-content}}

.reminder-dashboard-alert{display:flex;align-items:center;justify-content:space-between;gap:18px;border-left:5px solid var(--amber);background:#fffaf0}.reminder-dashboard-alert h2{margin:2px 0 5px;font-size:22px}.reminder-dashboard-alert p{margin:0}.nav-reminder-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:#e85d04;color:#fff;font-size:11px;font-weight:800;vertical-align:middle}.reminder-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.reminder-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.reminder-summary-card{padding:13px 15px;border:1px solid var(--line);border-radius:12px;background:#fff}.reminder-summary-card strong{display:block;font-size:24px}.reminder-summary-card span{color:var(--muted);font-size:12px}@media(max-width:760px){.reminder-dashboard-alert{align-items:stretch;flex-direction:column}.reminder-summary{grid-template-columns:1fr}}
.contact-inline-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.contact-inline-actions .btn{white-space:nowrap}
.btn.disabled{opacity:.55;cursor:not-allowed;pointer-events:none}
.talk-grid-ranked{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px}
.talk-chip-ranked{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left}
.talk-chip-ranked>div{display:flex;gap:9px;align-items:flex-start;width:100%}
.talk-chip-ranked small{display:block;color:#667085;font-size:.82rem}

/* Recomendaciones de discursos seleccionables */
.talk-chip-ranked{cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s,transform .15s;user-select:none}
.talk-chip-ranked:hover{border-color:#9bb8ea;background:#fbfdff;transform:translateY(-1px)}
.talk-chip-ranked:focus-visible{outline:3px solid rgba(23,92,211,.25);outline-offset:2px}
.talk-chip-ranked.is-selected{border-color:var(--primary);box-shadow:0 0 0 2px rgba(23,92,211,.12);background:#f5f8ff}
.talk-chip-ranked.is-selected small{color:var(--primary);font-weight:700}

.btn.danger{color:#b42318;border-color:#f0b8b3;background:#fff}.btn.danger:hover{background:#fff5f4}

/* Agenda de salidas */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid label{display:flex;flex-direction:column;gap:6px;font-weight:700}.form-grid input,.form-grid select{font:inherit;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.agenda-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.year-nav{display:flex;gap:7px;flex-wrap:wrap}.agenda-month{margin-top:18px}.agenda-month h2{font-size:18px;text-transform:capitalize;border-bottom:1px solid var(--line);padding-bottom:8px}.agenda-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 4px;border-bottom:1px solid var(--line)}.agenda-row.cancelled{opacity:.55}.agenda-row.completed{background:#f7fbf8}.agenda-date{display:flex;flex-direction:column;align-items:center;justify-content:center}.agenda-date strong{font-size:28px;line-height:1}.agenda-date span{font-size:12px;color:var(--muted);margin-top:4px;text-transform:capitalize}.agenda-main h3{margin:0 0 4px;font-size:17px}.agenda-main p{margin:3px 0}.agenda-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.agenda-status{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:6px 9px;border-radius:999px;background:#eef4ff;color:#2457a6}.completed .agenda-status{background:#e8f7ed;color:#176b3a}.cancelled .agenda-status{background:#f1f1f1;color:#666}.btn.danger{color:#b42318;border-color:#f0b8b3;background:#fff}.btn.danger:hover{background:#fff5f4}@media(max-width:760px){.form-grid{grid-template-columns:1fr}.agenda-toolbar{align-items:stretch;flex-direction:column}.agenda-row{grid-template-columns:58px 1fr}.agenda-actions{grid-column:1/-1;justify-content:flex-start;padding-left:72px}.agenda-actions .btn{flex:0 0 auto}}

.week-card.no-meeting{border-left-color:#98a2b3;background:#f7f8fa}.week-card.no-meeting .week-main strong{color:#475467}

.special-program-box{padding:1rem;border:1px solid #cbd5e1;border-radius:14px;background:#f8fbff}.special-program-box h2{margin:.1rem 0 .5rem}.special-program-box h3{margin:.2rem 0 .7rem}.special-talks-summary{display:grid;gap:.5rem;margin-top:.8rem}.special-talks-summary>div{padding:.65rem .75rem;background:#fff;border:1px solid #e2e8f0;border-radius:10px}.special-editor{margin-top:1rem;padding:1rem;border:1px solid #cbd5e1;border-radius:14px;background:#f8fafc}.special-editor form{display:grid;gap:.75rem}.special-editor label{display:grid;gap:.35rem;font-weight:600}.special-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.special-editor-grid>div{display:grid;gap:.5rem;padding:.85rem;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.inline-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;font-weight:500!important}.inline-check input{width:auto!important}.week-card.special-program{border-left:6px solid #2563eb}.special-program-action{margin-top:1rem}.no-meeting-box{padding:1rem;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc}@media(max-width:800px){.special-editor-grid{grid-template-columns:1fr}}

/* Área inicial para usuarios no administradores */
.portal-wrap{max-width:1000px;margin:28px auto 0}.portal-head{display:flex;align-items:center;gap:18px;margin-bottom:28px}.portal-icon{width:64px;height:64px;border-radius:18px;background:#eef4ff;display:flex;align-items:center;justify-content:center;font-size:32px}.portal-head h1{margin:.1rem 0 .2rem}.portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.portal-card{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 8px 24px rgba(16,24,40,.06);transition:transform .15s,box-shadow .15s,border-color .15s}.portal-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(16,24,40,.1);border-color:#b8c7df}.portal-card-icon{font-size:36px;margin-bottom:14px}.portal-card h2{font-size:25px;margin:.1rem 0 .5rem}.portal-card p{color:var(--muted);min-height:52px;margin:0 0 22px;line-height:1.5}.portal-card .btn{display:inline-block}.portal-outgoing{border-top:5px solid #16a05d}.portal-program{border-top:5px solid #2563eb}@media(max-width:700px){.portal-wrap{margin-top:18px}.portal-grid{grid-template-columns:1fr}.portal-head{align-items:flex-start}.portal-card{padding:22px}}

/* v2.36 responsive/accessibility layer */
html{scroll-behavior:smooth}body{font-size:15px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid rgba(23,92,211,.35);outline-offset:2px}.skip-link{position:fixed;left:12px;top:8px;z-index:1000;transform:translateY(-150%);background:#fff;color:var(--text);padding:10px 14px;border-radius:9px;box-shadow:var(--shadow);font-weight:700}.skip-link:focus{transform:none}.nav-reminder-count{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;padding:0 5px;border-radius:999px;background:#ef4444;color:#fff;font-size:11px;font-weight:800}.mobile-nav{display:none}.mobile-more summary{list-style:none;cursor:pointer}.mobile-more summary::-webkit-details-marker{display:none}.mobile-more-menu{position:absolute;right:8px;bottom:calc(100% + 8px);width:min(260px,calc(100vw - 16px));padding:8px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 35px rgba(0,0,0,.18);display:grid;gap:3px}.mobile-more-menu a{padding:12px;border-radius:9px;text-decoration:none;color:var(--text);font-weight:600}.mobile-more-menu a:hover{background:#f4f6f8}.password-wrap{position:relative}.password-wrap input{padding-right:78px}.password-toggle{position:absolute;right:7px;top:12px;border:0;background:transparent;color:var(--primary);font-weight:700;cursor:pointer;padding:8px}.btn,.mobile-nav a{min-height:44px}input,select,textarea{font-size:16px}.login-body{min-height:100dvh}.modal-card{max-height:calc(100dvh - 40px)}@media(max-width:760px){body{padding-bottom:calc(68px + env(safe-area-inset-bottom));}.topbar{height:58px;padding:0 14px}.topbar nav{display:none}.brand{font-size:16px}.brand a span{display:inline}.container{padding:18px 12px}.mobile-nav{position:fixed;left:0;right:0;bottom:0;z-index:50;display:grid;grid-template-columns:repeat(5,1fr);align-items:stretch;padding:6px 5px calc(6px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid var(--line);box-shadow:0 -4px 18px rgba(20,30,40,.08)}.mobile-nav>a,.mobile-more summary{min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);font-size:11px;font-weight:700;text-decoration:none;border-radius:9px}.mobile-nav>a:hover,.mobile-nav>a:focus-visible,.mobile-more summary:hover{background:#f4f6f8}.mobile-nav-badge{position:relative}.mobile-nav-badge b{position:absolute;top:2px;right:22%;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center}.mobile-more{position:relative;display:block}.mobile-more summary{list-style:none}.mobile-more[open] summary{background:#eef2f6;color:var(--text)}.week-card{grid-template-columns:64px 1fr 24px;gap:10px}.date strong{font-size:14px}.week-main strong{font-size:15px}.mini-meta{display:none}.candidate{grid-template-columns:32px 1fr;padding:14px}.score{grid-column:2}.modal-backdrop{align-items:end;padding:0}.modal-card{width:100%;max-height:92dvh;border-radius:18px 18px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom))}.modal-actions{position:sticky;bottom:0;background:#fff;padding-top:10px}.modal-close{min-width:44px;min-height:44px}.form-grid,.local-grid{grid-template-columns:1fr}.table-wrap{-webkit-overflow-scrolling:touch}.table-wrap table{min-width:720px}.login-card{padding:26px 22px}.password-toggle{min-height:44px;top:8px}}
@media(min-width:761px) and (max-width:1100px){.topbar{padding:0 16px}.topbar nav{gap:10px}.topbar nav a{font-size:13px}.container{padding-left:16px;padding-right:16px}}
@media(min-width:1200px){.container{max-width:1320px}.page-head h1{font-size:34px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.week-card:hover,.portal-card:hover,.talk-chip-ranked:hover{transform:none}.portal-card,.talk-chip-ranked{transition:none}}


/* v2.37 · FASE 2 — responsive real de pantallas principales */
:root{--content-max:1320px;--touch:44px}
.container{max-width:var(--content-max)}
.btn{min-height:var(--touch)}
.btn.small{min-height:var(--touch);padding:8px 11px;font-size:13px}
input[type="checkbox"],input[type="radio"]{width:22px!important;height:22px!important;min-width:22px;accent-color:var(--primary)}

/* Programa: fecha y estado se leen como unidades independientes en móvil */
.week-card{min-height:76px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.week-card .date{align-self:stretch;display:flex;flex-direction:column;justify-content:center}
.week-card .date span{font-variant-numeric:tabular-nums}
.week-card .week-main{min-width:0}
.week-card .week-main strong,.week-card .week-main span{overflow-wrap:anywhere}

/* Domingo: una acción primaria clara y botones secundarios cómodos */
.sunday-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.sunday-actions form{margin:0}
.sunday-actions .btn{white-space:nowrap}
.special-form{display:grid;gap:10px}
.special-form .btn{justify-self:start}

/* Candidatos */
.candidate{min-width:0}
.cand-main{min-width:0}
.cand-main h2,.reasons{overflow-wrap:anywhere}
.candidate .score{min-width:0}
.candidate .score .btn{width:100%}
.manual-result{min-width:0}

/* Formularios y herramientas */
.form-grid{align-items:start}
.searchbar input,.contact-filters input,.contact-filters select{min-width:0}
.table-wrap{border-radius:12px}
table{font-variant-numeric:tabular-nums}
th{white-space:nowrap}

/* iPad / tablets: 2 columnas donde hay espacio real, sin apretar el contenido */
@media (min-width:768px) and (max-width:899px){
  .container{padding:22px 18px}
  .topbar{height:60px}
  .topbar nav{gap:9px}
  .topbar nav a{font-size:12px}
  .brand{font-size:16px}
  .grid2{grid-template-columns:1fr}
  .week-card{grid-template-columns:92px minmax(0,1fr) 26px}
  .candidate{grid-template-columns:42px minmax(0,1fr)}
  .candidate .score{grid-column:2;display:grid;grid-template-columns:1fr 1fr;align-items:start;text-align:left}
  .candidate .score .contact-status{grid-column:1/-1;width:100%;text-align:left}
  .candidate .score .btn{width:auto}
  .form-grid,.local-grid{grid-template-columns:1fr 1fr}
  .table-wrap table{min-width:760px}
}

/* Móvil real: las tablas dejan de ser tablas y pasan a fichas */
@media (max-width:767px){
  .page-head{gap:12px;margin-bottom:16px}
  .page-head h1{font-size:27px;line-height:1.15}
  .panel{padding:16px;border-radius:13px}
  .panel h2{font-size:23px}
  .month-nav{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
  .month-nav .btn{padding-left:6px;padding-right:6px;font-size:13px}
  .week-card{grid-template-columns:58px minmax(0,1fr) 22px;gap:9px;padding:12px 11px;border-left-width:5px}
  .week-card .date strong{font-size:13px}
  .week-card .date span{font-size:14px;font-weight:700;color:var(--text)}
  .week-card .week-main strong{font-size:14px;line-height:1.3}
  .week-card .week-main span{font-size:12px;line-height:1.35}
  .chev{font-size:24px}

  .grid2{gap:0}
  .sunday-actions{display:grid;grid-template-columns:1fr;align-items:stretch}
  .sunday-actions .btn,.sunday-actions form,.sunday-actions form .btn{width:100%}
  .special-editor-grid{gap:10px}
  .special-editor-grid>div{padding:12px}

  .candidate{grid-template-columns:28px minmax(0,1fr);gap:10px;padding:13px}
  .rank{font-size:18px}
  .cand-main h2{font-size:18px}
  .badges span{font-size:11px}
  .reasons{font-size:12px;line-height:1.45}
  .candidate .score{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:7px;text-align:left;align-items:stretch}
  .candidate .score>b,.candidate .score>small{display:none}
  .candidate .score .contact-status{grid-column:1/-1;min-height:44px;justify-content:center}
  .candidate .score .btn{width:100%;}
  .candidate .score form{margin:0}
  .candidate .score form .btn{width:100%}
  .manual-result{display:grid;gap:10px;padding:13px}
  .manual-result-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .manual-result-actions form{grid-column:1/-1}
  .manual-result-actions .btn{width:100%}

  /* CRUD tables → cards */
  .table-wrap{overflow:visible}
  .table-wrap table,.contact-table{min-width:0!important;width:100%;display:block}
  .table-wrap thead,.contact-table thead{display:none}
  .table-wrap tbody,.table-wrap tr,.contact-table tbody,.contact-table tr{display:block;width:100%}
  .table-wrap tr,.contact-table tr{margin-bottom:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 2px 10px rgba(20,30,40,.04)}
  .table-wrap td,.contact-table td{display:grid;grid-template-columns:minmax(95px,36%) minmax(0,1fr);gap:10px;padding:7px 2px;border:0;overflow-wrap:anywhere;vertical-align:top}
  .table-wrap td::before,.contact-table td::before{content:attr(data-label);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .table-wrap td[data-label="Acciones"],.contact-table td[data-label="Acciones"]{display:block;padding-top:10px;border-top:1px solid var(--line);margin-top:4px}
  .table-wrap td[data-label="Acciones"]::before,.contact-table td[data-label="Acciones"]::before{display:none}
  .table-wrap td[data-label="Acciones"] .btn,.contact-table td[data-label="Acciones"] .btn{width:100%;margin-top:4px}
  .contact-inline-actions{display:grid;grid-template-columns:1fr;gap:6px}
  .contact-inline-actions .btn{width:100%!important}
  .contact-table details{margin:0}

  .form-grid{gap:9px}
  .form-grid label{margin:8px 0}
  .searchbar{display:grid;grid-template-columns:1fr auto;gap:7px}
  .searchbar .btn{width:auto}
  .inline-form{flex-direction:column;align-items:stretch}
  .inline-form label{max-width:none;width:100%}
  .talks-summary-head,.talk-picker-head{align-items:stretch;flex-direction:column}
  .talk-search{width:100%}
  .talk-picker{grid-template-columns:1fr;max-height:none}
  .selected-talk{width:100%;min-height:44px}
  .talks-actions{position:sticky;bottom:calc(68px + env(safe-area-inset-bottom));z-index:8;background:rgba(255,255,255,.96);margin:10px -16px -16px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
  .talks-actions .btn{width:100%}

  .agenda-row{grid-template-columns:54px minmax(0,1fr);gap:10px;padding:12px 2px}
  .agenda-actions{grid-column:1/-1;padding-left:64px;display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .agenda-actions .agenda-status{grid-column:1/-1;text-align:center}
  .agenda-actions .btn,.agenda-actions form,.agenda-actions form .btn{width:100%}
  .agenda-actions form{margin:0}

  .contact-filters{gap:7px}
  .filter-actions{display:grid;grid-template-columns:1fr 1fr}
  .filter-actions .btn{width:100%}

  .modal-card{padding:16px 14px calc(14px + env(safe-area-inset-bottom))}
  .modal-actions{display:grid;grid-template-columns:1fr;gap:7px}
  .modal-actions .btn{width:100%}

  .portal-card h2{font-size:22px}
}

/* Escritorio grande: usar el ancho adicional sin crear líneas excesivamente largas */
@media (min-width:1200px){
  .container{padding-left:24px;padding-right:24px}
  .calendar-list{max-width:1180px}
  .grid2{grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr)}
}

/* Fase 3 — panel de atención y bandeja de pendientes */
.attention-dashboard{background:var(--card);border:1px solid var(--line);border-top:5px solid var(--primary);border-radius:14px;padding:20px;box-shadow:var(--shadow);margin-bottom:16px}.attention-head{display:flex;justify-content:space-between;align-items:center;gap:18px}.attention-head h2{margin:2px 0 5px;font-size:24px}.attention-head p{margin:0}.attention-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:16px}.attention-card{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:inherit;background:#fff}.attention-card strong{font-size:28px;line-height:1}.attention-card span{font-weight:750}.attention-card small{color:var(--muted);margin-top:2px}.attention-danger{border-left:4px solid var(--red)}.attention-warn{border-left:4px solid var(--amber)}.attention-ok{border-left:4px solid var(--green)}.attention-info{border-left:4px solid var(--primary);background:#f7faff}.next-sunday-panel{display:flex;justify-content:space-between;align-items:center;gap:18px;background:#eef4ff;border:1px solid #cbdaf7;border-radius:14px;padding:16px 20px;margin-bottom:18px}.next-sunday-panel h2{margin:2px 0 3px}.next-sunday-panel p{margin:0}.admin-section{margin-bottom:22px}.admin-section .panel-label{margin-bottom:9px}.admin-card-primary{border-top:4px solid var(--primary)}.pending-tabs{display:flex;gap:6px;overflow:auto;margin-bottom:16px;padding-bottom:2px}.pending-tabs a{display:inline-flex;align-items:center;gap:7px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);text-decoration:none;font-weight:700;white-space:nowrap}.pending-tabs a.active{background:var(--primary);border-color:var(--primary);color:#fff}.pending-tabs b{font-size:11px;min-width:20px;height:20px;padding:0 5px;border-radius:99px;display:inline-flex;align-items:center;justify-content:center;background:#eef2f6;color:var(--text)}.pending-tabs a.active b{background:rgba(255,255,255,.2);color:#fff}.pending-list{display:grid;gap:10px}.pending-card{display:flex;justify-content:space-between;align-items:center;gap:18px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}.pending-card h2{font-size:18px;margin:3px 0 4px}.pending-card p{margin:0}.pending-date{font-size:12px;color:var(--muted);font-weight:750}.pending-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:750}.status-pill.waiting{background:#fff4df;border:1px solid #f0d89a;color:#805b08}.status-pill.danger{background:#fdecea;border:1px solid #e7b6b6;color:#9f2118}.pending-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pending-links .panel-label{width:100%;margin-bottom:0}
@media(max-width:900px){.attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.attention-head{align-items:flex-start;flex-direction:column}.next-sunday-panel{align-items:flex-start;flex-direction:column}.pending-card{align-items:flex-start;flex-direction:column}.pending-actions{justify-content:flex-start}.pending-actions .btn{width:100%}.pending-actions .status-pill{width:max-content}}
@media(max-width:600px){.attention-grid{grid-template-columns:1fr}.attention-dashboard{padding:16px}.attention-head .btn{width:100%}.pending-tabs{margin-right:-4px}.pending-card{padding:13px}.pending-actions{width:100%}}

/* v2.41 · FASE 4 — sistema visual y accesibilidad avanzada */
:root{
  --bg:#f5f7fa;
  --card:#ffffff;
  --surface:#f8fafc;
  --surface-strong:#eef3f8;
  --text:#17202a;
  --muted:#61707f;
  --muted-strong:#4b5968;
  --line:#dfe5eb;
  --line-strong:#cbd4de;
  --primary:#175cd3;
  --primary-hover:#124bb3;
  --primary-soft:#edf4ff;
  --green:#168a4a;
  --green-soft:#eaf7ef;
  --red:#c9362b;
  --red-soft:#fdecea;
  --amber:#a96f12;
  --amber-soft:#fff6df;
  --info:#2563eb;
  --info-soft:#eef4ff;
  --shadow-sm:0 2px 8px rgba(20,30,40,.045);
  --shadow:0 5px 18px rgba(20,30,40,.065);
  --shadow-lg:0 12px 32px rgba(20,30,40,.11);
  --radius-sm:9px;
  --radius:12px;
  --radius-lg:16px;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-8:32px;
  --touch:44px;
}

html{font-size:16px}
body{background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body,button,input,select,textarea{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}

h1,h2,h3,h4,strong,b{color:var(--text)}
h1,h2,h3{letter-spacing:-.015em}
.page-head h1{font-size:clamp(1.75rem,2.3vw,2.15rem);line-height:1.15}
.muted,.reasons,.mini-meta,.section-intro{color:var(--muted)}

/* Navegación */
.topbar{background:#111827;box-shadow:0 2px 12px rgba(15,23,42,.16)}
.topbar nav a{position:relative;padding:10px 2px;opacity:.9;transition:opacity .15s ease,color .15s ease}
.topbar nav a:hover,.topbar nav a:focus-visible{opacity:1;color:#fff}
.topbar nav a[aria-current="page"]{opacity:1}
.topbar nav a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:2px;border-radius:99px;background:#fff}

/* Controles */
.btn{min-height:var(--touch);padding:9px 14px;border-radius:var(--radius-sm);border-color:var(--line-strong);box-shadow:0 1px 1px rgba(20,30,40,.025);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.btn:hover{filter:none;box-shadow:var(--shadow-sm)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}
.btn.whatsapp{background:#168b4a;border-color:#168b4a;color:#fff}
.btn.danger{background:#fff;border-color:#e5aaa6;color:var(--red)}
.btn.danger:hover{background:var(--red-soft)}
.btn.small{min-height:var(--touch);font-size:13px;padding:8px 11px}
.btn.disabled{opacity:.55;cursor:not-allowed}

/* Formularios: contraste, foco y estados */
input,select,textarea{min-height:var(--touch);border-color:var(--line-strong);color:var(--text);background:var(--card);border-radius:var(--radius-sm);transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}
input::placeholder,textarea::placeholder{color:#788695;opacity:1}
input:hover,select:hover,textarea:hover{border-color:#aeb9c5}
input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(23,92,211,.12);outline:0}
label{line-height:1.35}

:focus-visible{outline:3px solid rgba(23,92,211,.42)!important;outline-offset:2px}
.skip-link:focus{outline:3px solid var(--primary)!important}

/* Tarjetas y superficies */
.panel,.admin-card,.candidate,.pending-card,.attention-dashboard,.week-card,.talk-edit-grid,.talk-picker,.selected-talks{box-shadow:var(--shadow-sm)}
.panel{border-color:var(--line);border-radius:var(--radius-lg)}
.panel:hover{border-color:#d6dde5}
.admin-card{border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.admin-card:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:#cbd6e1}
.week-card:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:#d3dce5}
.candidate:hover,.pending-card:hover{border-color:#d0dae5;box-shadow:var(--shadow-sm)}

/* Etiquetas: menos dependencia del color */
.badges span,.badge{background:var(--surface-strong);color:var(--muted-strong);border:1px solid #e1e7ed}
.status-pill{min-height:32px}
.status-pill.waiting{background:var(--amber-soft);border-color:#ecd18f;color:#795708}
.status-pill.danger{background:var(--red-soft);border-color:#e6b7b2;color:#95271f}

/* Avisos con jerarquía clara */
.flash{position:relative;border:1px solid transparent;box-shadow:var(--shadow-sm);padding:12px 42px 12px 14px}
.flash.ok{background:var(--green-soft);border-color:#b9e2c9;color:#12643a}
.flash.error{background:var(--red-soft);border-color:#e8b8b4;color:#95271f}

/* Atención: estados visibles con texto, no solo color */
.attention-card{box-shadow:none;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.attention-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.attention-ok{border-left-color:var(--green)}
.attention-danger{border-left-color:var(--red)}
.attention-warn{border-left-color:var(--amber)}
.attention-info{border-left-color:var(--info)}

/* Tablas */
table{font-variant-numeric:tabular-nums}
th{font-size:12px;text-transform:uppercase;letter-spacing:.045em;color:var(--muted-strong);background:var(--surface)}
th,td{border-bottom-color:var(--line);padding:12px 10px}
tbody tr:hover{background:rgba(23,92,211,.025)}

/* Fechas y números */
.date strong,.talk-number,.talk-picker-number,.pending-date,.attention-card strong{font-variant-numeric:tabular-nums}

/* Feedback táctil y movimiento */
@media (hover:hover){.btn:hover,.selected-talk:hover,.talk-picker-item:hover{transform:translateY(-1px)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.btn:hover,.selected-talk:hover,.talk-picker-item:hover,.admin-card:hover,.week-card:hover,.candidate:hover,.pending-card:hover,.attention-card:hover{transform:none}}

/* Lectura a 200 %: evita tamaños microscópicos */
@media (min-width:768px){.panel-label{font-size:12px}.badges span,.badge{font-size:13px}.small{font-size:.875rem}}

/* Móvil: más aire y acciones claramente agrupadas */
@media (max-width:767px){
  .container{padding-left:14px;padding-right:14px}
  .panel{padding:16px}
  .page-head h1{font-size:clamp(1.65rem,7vw,2rem)}
  .panel-label{font-size:11px}
  .btn.small{font-size:13px}
  .mobile-nav{background:rgba(255,255,255,.98);box-shadow:0 -6px 22px rgba(20,30,40,.09)}
  .mobile-nav a[aria-current="page"],.mobile-more[open] summary{color:var(--primary);background:var(--primary-soft)}
  .mobile-more-menu{box-shadow:var(--shadow-lg)}
}

/* Dark mode preparado y coherente con los tokens. No altera contenido ni lógica. */
html[data-theme="dark"]{--bg:#0f141a;--card:#171d24;--surface:#1c242d;--surface-strong:#25303b;--text:#eef2f6;--muted:#a7b2bd;--muted-strong:#c4cdd6;--line:#2d3742;--line-strong:#46515d;--primary:#6ea0ff;--primary-hover:#83adff;--primary-soft:#1a2a45;--green:#42c779;--green-soft:#123523;--red:#ff766c;--red-soft:#3a1d1b;--amber:#e2ad4c;--amber-soft:#382d17;--info:#73a1ff;--info-soft:#182943;--shadow-sm:0 2px 8px rgba(0,0,0,.2);--shadow:0 6px 20px rgba(0,0,0,.24);--shadow-lg:0 14px 36px rgba(0,0,0,.42);color-scheme:dark}
html[data-theme="dark"] .topbar{background:#090d12}
html[data-theme="dark"] .btn,html[data-theme="dark"] .admin-card,html[data-theme="dark"] .panel,html[data-theme="dark"] .candidate,html[data-theme="dark"] .pending-card,html[data-theme="dark"] .attention-card,html[data-theme="dark"] .week-card,html[data-theme="dark"] .talk-edit-item,html[data-theme="dark"] .talk-picker-item,html[data-theme="dark"] .selected-talk{background:var(--card);color:var(--text)}
html[data-theme="dark"] .btn.primary,html[data-theme="dark"] .btn.whatsapp{color:#fff}
html[data-theme="dark"] .btn.danger{background:transparent;border-color:#78413d;color:var(--red)}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea,html[data-theme="dark"] .role-select{background:#11171d;color:var(--text);border-color:var(--line-strong)}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#8e9aa6}
html[data-theme="dark"] th{background:var(--surface)}
html[data-theme="dark"] tbody tr:hover{background:rgba(110,160,255,.06)}
html[data-theme="dark"] .mobile-nav{background:rgba(15,20,26,.98);border-color:var(--line)}
html[data-theme="dark"] .mobile-nav a,html[data-theme="dark"] .mobile-more summary{color:var(--muted)}
html[data-theme="dark"] .mobile-nav a[aria-current="page"],html[data-theme="dark"] .mobile-more[open] summary{color:var(--primary);background:var(--primary-soft)}
html[data-theme="dark"] .mobile-more-menu{background:var(--card);border-color:var(--line)}
html[data-theme="dark"] .mobile-more-menu a{color:var(--text)}
html[data-theme="dark"] .mobile-more-menu a:hover{background:var(--surface)}
html[data-theme="dark"] .skip-link{background:var(--card);color:var(--text)}
html[data-theme="dark"] .next-sunday-panel,html[data-theme="dark"] .attention-info{background:var(--info-soft);border-color:#334b72}
html[data-theme="dark"] .flash.ok{background:var(--green-soft);color:#8ee1ae;border-color:#275f3e}
html[data-theme="dark"] .flash.error{background:var(--red-soft);color:#ffaaa3;border-color:#713b37}
html[data-theme="dark"] .login-body{background:linear-gradient(135deg,#101720,#151d25)}
html[data-theme="dark"] .login-card{background:var(--card)}
html[data-theme="dark"] .table-wrap tr,html[data-theme="dark"] .contact-table tr{background:var(--card);box-shadow:0 2px 10px rgba(0,0,0,.18)}
html[data-theme="dark"] .table-wrap td,html[data-theme="dark"] .contact-table td{color:var(--text)}
html[data-theme="dark"] .modal-card,html[data-theme="dark"] .modal-actions{background:var(--card);color:var(--text)}
html[data-theme="dark"] .selected-talks,html[data-theme="dark"] .talk-picker,html[data-theme="dark"] .special-program-box,html[data-theme="dark"] .special-editor,html[data-theme="dark"] .no-meeting-box{background:var(--surface);border-color:var(--line)}
html[data-theme="dark"] .special-talks-summary>div,html[data-theme="dark"] .special-editor-grid>div,html[data-theme="dark"] .role-check-item,html[data-theme="dark"] .portal-card{background:var(--card);border-color:var(--line);color:var(--text)}
html[data-theme="dark"] .talks-actions{background:rgba(23,29,36,.97);border-color:var(--line)}
html[data-theme="dark"] .badges span,html[data-theme="dark"] .badge,html[data-theme="dark"] .pending-tabs b{background:var(--surface-strong);color:var(--muted-strong);border-color:var(--line)}
html[data-theme="dark"] .pending-tabs a{background:var(--card);color:var(--text)}
html[data-theme="dark"] .pending-tabs a.active{background:var(--primary);color:#07111f}
html[data-theme="dark"] .attention-card{background:var(--card)}
html[data-theme="dark"] .agenda-row.completed{background:#10281d}
html[data-theme="dark"] .week-card.no-meeting{background:var(--surface)}
html[data-theme="dark"] .talk-chip-ranked:hover,html[data-theme="dark"] .selected-talk:hover,html[data-theme="dark"] .talk-picker-item:hover{background:var(--surface-strong)}
html[data-theme="dark"] .theme-option{background:var(--surface);border-color:var(--line);color:var(--text)}
html[data-theme="dark"] .theme-option.is-selected{background:var(--primary-soft);border-color:var(--primary);box-shadow:0 0 0 2px rgba(110,160,255,.18)}


/* Utilidad accesible: visible para lectores de pantalla, no para la vista */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Contraste reforzado cuando el sistema lo solicita */
@media (prefers-contrast:more){
  :root{--line:#aeb9c5;--line-strong:#7f8c99;--muted:#4b5968}
  .btn,.admin-card,.panel,.candidate,.pending-card,.attention-card,.week-card{border-width:2px}
  .topbar nav a[aria-current="page"]::after{height:3px}
}


/* v2.42 · selector de apariencia */
.theme-settings-card{display:flex;align-items:center;justify-content:space-between;gap:24px}.theme-settings-card h2{margin:0 0 4px;font-size:20px}.theme-settings-card p{margin:0}.theme-options{display:grid;grid-template-columns:repeat(3,minmax(118px,1fr));gap:8px;min-width:min(100%,420px)}.theme-option{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:9px;align-items:center;text-align:left;min-height:64px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--text);cursor:pointer;font:inherit}.theme-option>span{grid-row:1/3;font-size:22px}.theme-option b{font-size:14px}.theme-option small{color:var(--muted);font-size:12px}.theme-option.is-selected{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 2px rgba(23,92,211,.10)}@media(max-width:760px){.theme-settings-card{align-items:stretch;flex-direction:column}.theme-options{grid-template-columns:1fr;min-width:0;width:100%}.theme-option{min-height:60px}}

/* v2.43 · Programa imprimible */
.print-range-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:end}.print-range-form label{margin:0}.print-range-actions{grid-column:1/-1;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.print-program-info{margin-top:16px;padding:12px 14px;border-radius:10px;background:#f5f8fc;color:var(--muted);font-size:14px}.print-preview-title{font-size:24px;font-weight:800;margin-bottom:4px}.print-preview-range{font-size:15px;color:var(--muted)}
@media(max-width:700px){.print-range-form{grid-template-columns:1fr}.print-range-actions{justify-content:stretch}.print-range-actions .btn{flex:1}.print-preview-title{font-size:21px}}
@media(prefers-color-scheme:dark){.print-program-info{background:#17202a}.print-preview-range{color:var(--muted)}}

/* Programa imprimible: previsualización fiel del A4 */
.print-preview-help{margin:0 0 16px;color:var(--muted);font-size:14px}
.print-sheet-preview{background:#fff;color:#172033;border:1px solid #d9e0e8;border-radius:12px;padding:26px;box-shadow:0 8px 24px rgba(15,23,42,.08);max-width:900px;margin:0 auto;font-family:Arial,Helvetica,sans-serif}
.print-sheet-head{border-top:5px solid #175bd7;padding:0 0 16px;margin-bottom:12px;border-bottom:1px solid #d9e0e8}
.print-sheet-title{font-size:25px;font-weight:800;line-height:1.1;margin-bottom:5px}
.print-sheet-range{font-size:13px;color:#5e6f84}
.print-sheet-row{border:1px solid #d8dee7;border-left:4px solid #175bd7;border-radius:8px;background:#f7f9fc;margin:0 0 8px;padding:9px 11px}
.print-sheet-row.is-no-meeting{border-left-color:#8b95a5;background:#f1f3f5}
.print-sheet-row.is-special{border-left-color:#6757c8}
.print-sheet-row-head{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;align-items:baseline;margin-bottom:7px;font-size:12px}
.print-sheet-row-head strong{font-size:14px;white-space:nowrap}
.print-sheet-row-head span{font-weight:700;font-style:italic;line-height:1.25}
.print-sheet-details{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:16px;font-size:11px;line-height:1.25}
.print-sheet-details div{display:flex;gap:5px;min-width:0}.print-sheet-details b{font-size:9px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.print-sheet-details span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.print-sheet-note,.print-sheet-special{font-size:11px;color:#4f6075}
[data-theme="dark"] .print-sheet-preview{background:#fff;color:#172033;border-color:#cdd5df;box-shadow:0 8px 24px rgba(0,0,0,.28)}
@media(max-width:800px){.print-sheet-preview{padding:18px}.print-sheet-title{font-size:21px}.print-sheet-row-head{grid-template-columns:78px minmax(0,1fr);gap:8px}.print-sheet-details{grid-template-columns:1fr;gap:4px}.print-sheet-details div{display:grid;grid-template-columns:82px 1fr}}

/* v2.52 · Días especiales */
.special-types-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}.special-type-card{margin-bottom:0;border-top:4px solid var(--primary)}.special-type-card:nth-child(2){border-top-color:#6757c8}.special-type-card:nth-child(3){border-top-color:#d97706}.special-type-card:nth-child(4){border-top-color:#168a4a}.special-type-icon{font-size:28px;margin-bottom:5px}.special-type-card h2{font-size:21px;margin:2px 0 7px}.special-type-card p{color:var(--muted);min-height:58px;margin:0 0 13px}.special-visit-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.special-visit-row input{margin:0}.special-editor-page{scroll-margin-top:82px}.special-event-form{display:grid;gap:8px}.special-event-dates{display:grid;grid-template-columns:1fr;gap:10px}.special-event-dates label{margin:0}.regional-dates{grid-template-columns:1fr 1fr;display:none}.special-events-list{display:grid;gap:8px}.special-event-row{display:grid;grid-template-columns:210px 1fr auto;gap:16px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:var(--card)}.special-event-date b,.special-event-date span,.special-event-main strong,.special-event-main span{display:block}.special-event-date span,.special-event-main span{font-size:13px;color:var(--muted);margin-top:2px}.special-event-actions{display:flex;gap:7px;align-items:center}.special-event-actions form{margin:0}.month-special-events{margin-top:18px}.month-special-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.month-special-head h2{margin:0;font-size:20px}.month-special-head p{margin:2px 0 0}.month-special-list{display:grid;gap:7px}.month-special-row{display:grid;grid-template-columns:190px 1fr;gap:15px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}.month-special-date b,.month-special-date span{display:block}.month-special-date span{font-size:12px;color:var(--muted);margin-top:2px}
@media(max-width:760px){.special-types-grid{grid-template-columns:1fr}.special-visit-row{grid-template-columns:1fr}.special-event-row{grid-template-columns:1fr;gap:8px}.special-event-actions{justify-content:flex-start}.regional-dates{grid-template-columns:1fr}.month-special-head{align-items:flex-start;flex-direction:column}.month-special-row{grid-template-columns:1fr;gap:5px}}

.special-weekend-box{border-color:#c9d8f7;background:#f7faff}.special-weekend-box h2{margin:.2rem 0 .4rem}.special-weekend-box h3{margin:.1rem 0 .35rem;font-size:1.2rem}.weekend-special-selector{margin-top:1rem;padding:1rem;border:1px solid #dbe3ee;border-radius:14px;background:#fbfcfe}.weekend-special-selector .panel-label{margin-bottom:.35rem}.weekend-special-selector .special-form{gap:12px}.weekend-special-selector .special-event-dates{margin:0}.weekend-special-selector .regional-dates{display:none}

/* v2.57 · sugerencia correlativa de presidente y lector */
.role-assignment-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.role-assignment-form select{flex:1 1 220px;min-width:180px}
.role-suggestion-note{margin:.55rem 0 0}
.role-suggestion-note.suggestion-applied{font-weight:600}
@media (max-width:640px){.role-assignment-form{align-items:stretch}.role-assignment-form select,.role-assignment-form .btn{width:100%;flex:1 1 100%}}
/* v2.63 · Seguimiento de contactos rediseñado */
.contact-work-head{margin-bottom:18px}.contact-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.contact-stat{display:flex;align-items:center;gap:12px;padding:15px 17px;background:var(--card);border:1px solid var(--line);border-radius:14px;text-decoration:none;color:inherit;box-shadow:var(--shadow);transition:.15s ease}.contact-stat:hover,.contact-stat.active{transform:translateY(-1px);border-color:#c9d4e2}.contact-stat strong{font-size:25px;line-height:1}.contact-stat span{font-weight:700}.contact-stat.red strong{color:var(--red)}.contact-stat.orange strong{color:#b7791f}.contact-stat.green strong{color:var(--green)}.contact-stat.gray strong{color:var(--muted)}.contact-toolbar{padding:13px 15px}.contact-search{display:flex;gap:9px;align-items:center}.contact-search input{margin:0;flex:1}.contact-section-title{display:flex;justify-content:space-between;align-items:end;margin:22px 0 11px}.contact-section-title h2{font-size:25px;margin:2px 0}.contact-section-title p{margin:0;color:var(--muted)}.section-kicker{font-size:11px;font-weight:900;letter-spacing:.14em}.section-kicker.red{color:var(--red)}.section-kicker.orange{color:#a36a10}.section-kicker.green{color:var(--green)}.section-kicker.gray{color:var(--muted)}.contact-work-list{display:grid;gap:12px}.contact-work-card{display:grid;grid-template-columns:1fr auto;gap:18px;background:var(--card);border:1px solid var(--line);border-left:5px solid #cbd5e1;border-radius:15px;padding:17px 18px;box-shadow:var(--shadow)}.contact-work-card.red{border-left-color:var(--red)}.contact-work-card.yellow{border-left-color:#d99a22}.contact-work-card.orange{border-left-color:#c98517}.contact-work-card.blue{border-left-color:var(--primary)}.contact-work-card.green{border-left-color:var(--green)}.contact-work-top{display:flex;justify-content:space-between;gap:14px;align-items:start}.contact-work-top h2{margin:0 0 3px;font-size:20px}.contact-program{font-size:13px;color:var(--muted)}.contact-state{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;white-space:nowrap;background:#f1f3f5;color:#667085;border:1px solid #e0e4e8}.contact-state.red{background:#fdecea;color:#9f2118;border-color:#edc0bc}.contact-state.yellow{background:#fff6df;color:#795708;border-color:#eed18b}.contact-state.orange{background:#fff1dc;color:#8a5708;border-color:#e8c183}.contact-state.blue{background:#eaf2ff;color:#1556ad;border-color:#c5d8f7}.contact-state.green{background:#e7f7ee;color:#12643a;border-color:#bce8cd}.contact-state.gray{background:#f2f4f6;color:#667085;border-color:#dde2e7}.contact-state-sub{margin:8px 0;color:var(--muted);font-size:13px}.contact-quote{margin-top:11px;padding:10px 12px;background:#f8fafc;border:1px solid #e7ebef;border-radius:10px;color:#45505c}.contact-quote strong{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#7a8692}.contact-quote p{margin:4px 0 0;font-size:14px}.contact-next{margin-top:10px;font-size:13px;color:#8a5708}.contact-work-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;max-width:340px}.empty-work{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:40px 22px;text-align:center;box-shadow:var(--shadow)}.empty-work>div{font-size:34px}.empty-work h2{margin:8px 0 4px}.empty-work p{margin:0;color:var(--muted)}.confirmed-card{display:flex;justify-content:space-between;gap:18px;align-items:center;background:var(--card);border:1px solid var(--line);border-left:5px solid var(--green);border-radius:15px;padding:16px 18px;box-shadow:var(--shadow);margin-bottom:10px}.confirmed-date{font-size:12px;font-weight:900;color:var(--green);text-transform:uppercase;letter-spacing:.08em}.confirmed-card h2{margin:3px 0;font-size:20px}.confirmed-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.contact-history-table{min-width:760px}.contact-history-table th{background:#f7f9fb;color:#596777;font-size:12px;text-transform:uppercase;letter-spacing:.06em}.contact-history-table td{padding:12px}.modal-card{max-width:620px}@media(max-width:900px){.contact-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-work-card{grid-template-columns:1fr}.contact-work-actions{max-width:none;justify-content:flex-start}.contact-work-actions .btn{flex:1}.confirmed-card{align-items:flex-start;flex-direction:column}.confirmed-actions{justify-content:flex-start;width:100%}}@media(max-width:600px){.contact-stats{grid-template-columns:1fr 1fr;gap:8px}.contact-stat{padding:12px}.contact-stat strong{font-size:22px}.contact-stat span{font-size:13px}.contact-search{flex-direction:column;align-items:stretch}.contact-search .btn{width:100%}.contact-section-title h2{font-size:22px}.contact-work-card{padding:14px}.contact-work-top{flex-direction:column}.contact-work-actions{display:grid;grid-template-columns:1fr 1fr}.contact-work-actions .btn{width:100%}.contact-work-actions .btn.primary{grid-column:1/-1}.confirmed-actions{display:grid;grid-template-columns:1fr 1fr}.confirmed-actions .contact-state{grid-column:1/-1;justify-self:start}}
/* v2.65 · acciones de seguimiento simplificadas */
.inline-action-form{margin:0;display:inline-flex}.contact-work-actions .btn.success{background:#159447;color:#fff;border-color:#159447}.contact-work-actions .btn.success:hover{background:#117b3b;border-color:#117b3b}.contact-work-card.green .contact-program{color:var(--green);font-weight:600}.confirmed-actions .contact-state{margin-right:2px}
@media(max-width:900px){.inline-action-form{display:flex}.inline-action-form .btn{width:100%}}

/* v2.86 · Web app en iPhone/iPad: la barra superior respeta la zona segura (reloj, controles de ventana "liquid glass" de iPadOS) */
.topbar{padding-top:env(safe-area-inset-top);height:auto;min-height:calc(60px + env(safe-area-inset-top))}
html.ios-standalone .topbar{padding-top:max(env(safe-area-inset-top),20px);min-height:calc(60px + max(env(safe-area-inset-top),20px))}
html.ipad-standalone .topbar{padding-top:max(env(safe-area-inset-top),34px);min-height:calc(60px + max(env(safe-area-inset-top),34px))}
html.ios-standalone body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}

/* v2.88 · Pantalla del domingo: resumen de estado + tarjetas ordenadas y plegables */
.status-strip{margin:0 0 14px}
.status-summary{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:.95rem;padding:6px 12px;border-radius:999px;margin-bottom:10px}
.status-summary.is-ok{background:var(--green-soft);color:var(--green)}
.status-summary.is-todo{background:var(--amber-soft);color:var(--amber)}
.status-chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.st-chip{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius);background:var(--card);color:var(--text);text-decoration:none;min-height:var(--touch);box-shadow:var(--shadow-sm);min-width:0}
.st-chip:hover{border-color:var(--line-strong)}
.st-ico{font-size:1.35rem;line-height:1}
.st-txt{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.st-txt small{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.st-txt b{font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-ok{border-left-color:var(--green)}
.st-todo{border-left-color:var(--amber);background:var(--amber-soft)}
.st-na{border-left-color:var(--line-strong);background:var(--surface);color:var(--muted)}
.sunday-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.sunday-stack>.span2{grid-column:1/-1}
.sunday-stack>section[id]{scroll-margin-top:80px}
.sunday-stack .panel{margin:0}
details.inline-edit{margin-top:10px}
details.inline-edit>summary,details.card-more>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:var(--touch);padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);font-weight:600;font-size:.92rem;color:var(--primary)}
details.inline-edit>summary::-webkit-details-marker,details.card-more>summary::-webkit-details-marker,details.talks-panel>summary::-webkit-details-marker{display:none}
details.inline-edit>summary::after{content:"▾";font-size:.8em}
details.inline-edit[open]>summary::after{content:"▴"}
details.inline-edit[open]>summary{margin-bottom:10px}
details.card-more{margin-top:16px;padding-top:12px;border-top:1px dashed var(--line-strong)}
details.card-more>summary{color:var(--muted-strong);width:100%;justify-content:flex-start;flex-wrap:wrap}
details.card-more[open]>summary{margin-bottom:12px}
details.talks-panel{margin-top:14px;padding:0}
details.talks-panel>summary{cursor:pointer;list-style:none;display:flex;align-items:center;min-height:var(--touch);padding:12px 16px}
details.talks-panel>summary::after{content:"▾";margin-left:auto;color:var(--muted)}
details.talks-panel[open]>summary::after{content:"▴"}
details.talks-panel>summary .panel-label{margin:0}
details.talks-panel>:not(summary){margin-left:16px;margin-right:16px}
details.talks-panel>.talk-grid{margin-bottom:16px}
.hosp-panel .btn{margin-bottom:4px}
@media (max-width:767px){
  .sunday-stack{grid-template-columns:1fr;gap:12px}
  .status-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* v2.88 · Buscar discursante: lista corta + filtro */
.cand-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.cand-head .panel-label{margin:0}
.cand-head input[type=search]{flex:1;min-width:220px;max-width:420px}
.candidate.is-extra{display:none}
#cand-list.show-all .candidate.is-extra,#cand-list.filtering .candidate.is-extra{display:grid}
.candidate.is-hidden{display:none!important}
.cand-more-wrap{text-align:center;margin:14px 0 0}
details.talks-panel>:last-child{margin-bottom:16px}
details.talks-panel>.manual-results{margin-top:6px}
@media (min-width:768px){
  .candidate{grid-template-columns:46px minmax(0,1fr) 250px;padding:14px 16px}
  .candidate .score{display:grid;grid-template-columns:1fr 1fr;column-gap:8px;row-gap:6px;align-items:center;text-align:left}
  .candidate .score b{grid-column:1;font-size:1.35rem;justify-self:start}
  .candidate .score small{grid-column:2;justify-self:end}
  .candidate .score .contact-status{grid-column:1/-1}
  .candidate .score .btn{width:100%;min-height:38px}
  .candidate .score form{grid-column:1/-1;margin:0}
}
@media (max-width:767px){.candidate .score form{grid-column:1/-1;margin:0}.candidate .score form .btn{width:100%}}

/* v2.90 · Textos de WhatsApp */
.wa-card{margin-bottom:14px}
.wa-vars{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.wa-var{border:1px solid var(--line-strong);background:var(--surface);color:var(--primary);border-radius:999px;padding:4px 10px;font:600 .82rem ui-monospace,Menlo,Consolas,monospace;cursor:pointer;min-height:32px}
.wa-var:hover{background:var(--primary-soft)}
.wa-body{width:100%;font:inherit;line-height:1.45;resize:vertical}
.wa-preview-label{margin:12px 0 6px}
.wa-preview{display:grid;gap:8px;margin-bottom:6px}
.wa-bubble{white-space:pre-wrap;background:var(--green-soft);border:1px solid var(--line);border-radius:4px 14px 14px 14px;padding:10px 12px;max-width:640px;font-size:.93rem;line-height:1.4}
.wa-bubble small{display:block;color:var(--muted);font-weight:700;margin-bottom:4px;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}

/* v2.90 · Configuración por temas */
.admin-search{margin:0 0 18px}
.admin-search input{width:100%;max-width:520px}
.admin-group{margin-bottom:22px}
.admin-group-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.admin-group-head .panel-label{margin:0}
.admin-card[hidden],.admin-group[hidden]{display:none!important}
details.admin-rare{border:1px dashed var(--line-strong);border-radius:var(--radius);padding:0 14px;background:var(--surface)}
details.admin-rare>summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-height:var(--touch);padding:12px 0}
details.admin-rare>summary::-webkit-details-marker{display:none}
details.admin-rare>summary::after{content:"▾";margin-left:auto;color:var(--muted)}
details.admin-rare[open]>summary::after{content:"▴"}
details.admin-rare>summary .panel-label{margin:0}
details.admin-rare>.admin-grid{padding-bottom:14px}
@media (max-width:767px){
  .admin-group .admin-grid{gap:8px}
  .admin-group .admin-card{padding:11px 14px;min-height:0}
  .admin-group .admin-card b{font-size:1rem}
  .admin-group .admin-card span{font-size:.84rem;line-height:1.3;margin-top:2px}
}

/* v2.92 talks stats/filters */
.talk-stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.talk-stats>div{background:var(--surface-2,#f3f4f6);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;min-width:120px}
.talk-stats b{font-size:1.5rem;line-height:1.1}
.talk-stats span{font-size:.8rem;opacity:.75}
.talk-top{flex:1;min-width:220px;flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:6px}
.talk-top>span{width:100%}
.talk-top a{background:rgba(127,127,127,.15);border-radius:999px;padding:3px 10px;font-size:.85rem;text-decoration:none;color:inherit}
.talk-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:8px}
.talk-filters label{display:flex;flex-direction:column;gap:3px;font-size:.85rem}
.talk-filters .tf-q{flex:1;min-width:180px}

/* v2.98 confirmar envío de WhatsApp */
.confirm-send-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 12px;padding:10px 14px;border-radius:14px;background:#fff7e0;border:1px solid #f0d58a;color:#4a3a00}
.confirm-send-banner .confirm-send-form{display:flex;gap:8px;flex-wrap:wrap}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .confirm-send-banner{background:#3a3115;border-color:#6b5a1f;color:#f3e6b5}}
:root[data-theme="dark"] .confirm-send-banner{background:#3a3115;border-color:#6b5a1f;color:#f3e6b5}

/* v2.99 tarjeta de seguimiento */
.contact-work-actions{display:flex;flex-direction:column;gap:10px}
.contact-outcome{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;align-items:stretch}
.contact-outcome-q{grid-column:1/-1;font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.7}
.contact-secondary{display:flex;flex-wrap:wrap;gap:8px}
.contact-secondary .btn{flex:1 1 150px}
.contact-links{display:flex;gap:16px;font-size:.9rem}
.contact-links a{text-decoration:none;opacity:.85}
.contact-work-card textarea{width:100%}
.contact-outcome .btn{width:100%;box-sizing:border-box}
.modal-card textarea{width:100%;box-sizing:border-box;font:inherit}

/* v3.02 ficha de congregación */
.cong-stats{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.cong-stats>div{background:rgba(127,127,127,.12);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;min-width:120px}
.cong-stats b{font-size:1.35rem;line-height:1.15}
.cong-stats span{font-size:.8rem;opacity:.75}

/* v3.04 — Maestro de congregaciones: lista compacta con filtros */
.cong-form-summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}.cong-form-summary::-webkit-details-marker{display:none}.cong-form-panel details[open]>.cong-form-summary{margin-bottom:14px}
.cong-toolbar{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;margin-bottom:14px}
.cong-search{position:relative;flex:1 1 280px;max-width:420px}.cong-search span{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none}.cong-search input{margin:0;padding-left:38px;border-radius:999px}
.cong-chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--card);color:var(--text);padding:8px 13px;border-radius:999px;font:inherit;font-size:13px;font-weight:650;cursor:pointer;min-height:38px}.chip b{margin-left:5px;font-size:11px;color:var(--muted)}.chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.chip.active b{color:rgba(255,255,255,.85)}
.cong-toggle{display:flex;align-items:center;gap:8px;margin:0 0 0 auto;font-weight:500;font-size:13px;color:var(--muted)}.cong-toggle input{width:18px!important;height:18px!important;min-width:18px;margin:0}
.cong-list{border:1px solid var(--line);border-radius:12px;overflow:visible}
.cong-row{display:grid;grid-template-columns:minmax(220px,2.2fr) 80px minmax(110px,1fr) minmax(130px,1.2fr) 90px 150px;gap:14px;align-items:center;padding:11px 16px;border-bottom:1px solid var(--line);background:var(--card)}
.cong-row:last-of-type{border-bottom:0}.cong-row[hidden]{display:none}.cong-row:not(.cong-head):hover{background:var(--surface,#f8fafc)}
.cong-head{background:var(--surface,#f8fafc);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:9px;padding-bottom:9px;border-radius:12px 12px 0 0}
.cong-name a{font-weight:700;font-size:15px;color:var(--text);text-decoration:none}.cong-name a:hover{color:var(--primary);text-decoration:underline}
.cong-sub{display:block;font-size:12.5px;color:var(--muted);line-height:1.35}.cong-cell{font-size:14px}
.cong-pill{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--primary-soft,#eaf1ff);color:var(--primary);font-weight:700;font-size:12px}
.cong-tag{display:inline-block;margin-top:3px;padding:2px 8px;border-radius:999px;background:var(--surface-strong,#eef2f6);color:var(--muted);font-size:11px;font-weight:700}.cong-tag.warn{background:var(--amber-soft,#fff4df);color:var(--amber)}
.cong-row.is-old{opacity:.7}
.cong-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;position:relative}.cong-actions .btn{min-height:36px}
.cong-more{position:relative}.cong-more summary{list-style:none;cursor:pointer;min-width:36px;padding:0 10px}.cong-more summary::-webkit-details-marker{display:none}
.cong-more-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:190px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:5px}.cong-more-menu a{display:block;padding:10px 12px;border-radius:7px;color:var(--text);text-decoration:none;font-weight:600;font-size:14px}.cong-more-menu a:hover{background:var(--surface,#f4f6f8)}
.cong-empty{padding:26px;text-align:center;margin:0}
@media(max-width:900px){
  .cong-row.cong-head{display:none}
  .cong-row{display:flex;flex-wrap:wrap;gap:4px 16px;padding:13px 14px}
  .cong-name{flex:1 1 100%}.cong-cell{font-size:13px}.cong-cell.empty{display:none}
  .cong-cell::before{content:attr(data-label)": ";font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .cong-cell .cong-sub{display:inline;margin-left:6px}
  .cong-actions{flex:1 1 100%;justify-content:flex-start;margin-top:6px}
  .cong-toggle{margin-left:0}
}

/* v3.04 — pantalla de salidas: «apuntar» claramente separado de «agenda» */
.page-head .btn.primary{white-space:nowrap}
details.add-outing{border-left:5px solid var(--primary);background:#f7faff;padding:0}
details.add-outing>summary{display:flex;align-items:center;gap:14px;padding:16px 20px;cursor:pointer;list-style:none}
details.add-outing>summary::-webkit-details-marker{display:none}
details.add-outing .add-ico{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--primary);color:#fff;font-size:22px;font-weight:700;flex:none;transition:transform .2s}
details.add-outing[open] .add-ico{transform:rotate(45deg)}
details.add-outing>summary strong{display:block;font-size:17px}
details.add-outing>summary small{display:block;color:var(--muted);font-size:13px}
details.add-outing>summary:hover{background:#eef4ff;border-radius:12px}
details.add-outing>form{padding:4px 20px 20px}
.agenda-title{margin:0 0 4px;font-size:22px}
.agenda-row.mine{background:#f3f8ff;box-shadow:inset 4px 0 0 var(--primary)}
.mine-badge{display:inline-block;vertical-align:middle;margin-left:6px;padding:2px 8px;border-radius:99px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;letter-spacing:.03em}
@media(max-width:760px){.page-head .btn.primary{width:100%}details.add-outing>summary{padding:14px}details.add-outing>form{padding:2px 14px 16px}}
html[data-theme="dark"] details.add-outing{background:#111b2e}
html[data-theme="dark"] details.add-outing>summary:hover{background:#16233c}
html[data-theme="dark"] .agenda-row.mine{background:#12203a}

/* v3.06 — valoración privada de discursantes */
.rate-box{display:grid;gap:12px;max-width:560px}
.rate-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rate-label{font-weight:700;min-width:130px}
.rate-stars{display:flex;gap:4px}
.rate-stars .star{width:46px;height:46px;border:1px solid var(--line);border-radius:11px;background:#fff;color:#d3d9df;font-size:26px;line-height:1;cursor:pointer;padding:0;touch-action:manipulation;transition:transform .08s,background .12s}
.rate-stars .star.on{color:#f5a623;background:#fff8e8;border-color:#f3d28a}
.rate-stars .star:active{transform:scale(.92)}
.rate-note{width:100%;margin:0!important}
.rate-foot{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted)}
.rate-saved{font-weight:700;color:var(--green)}
.rate-panel{border-left:5px solid #f5a623}
.rate-card{border-top:1px solid var(--line);padding:16px 0}
.rate-card:first-of-type{border-top:0}
.rate-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.rate-recent{display:flex;justify-content:space-between;gap:10px;padding:11px 2px;border-top:1px solid var(--line);text-decoration:none;color:inherit}
.rate-recent:first-of-type{border-top:0}
.rate-recent-avg{font-weight:800;color:#b7791f}
.rate-summary{display:grid;gap:8px;margin:6px 0 16px;max-width:560px}
.rate-sum-row{display:grid;grid-template-columns:150px 1fr 40px;align-items:center;gap:12px}
.rate-sum-row b{text-align:right}
.rate-bar{height:9px;border-radius:99px;background:#eceff3;overflow:hidden}
.rate-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#f5c04f,#f5a623)}
.rate-sum-total{padding-top:8px;border-top:1px solid var(--line);font-weight:800}
.stars-static{color:#f5a623;letter-spacing:1px;white-space:nowrap}
.stars-static .off{color:#d9dee3}
@media(max-width:760px){
  .rate-row{flex-direction:column;align-items:stretch;gap:6px}
  .rate-stars{width:100%}.rate-stars .star{flex:1;width:auto;height:50px}
  .rate-sum-row{grid-template-columns:110px 1fr 34px}
}
html[data-theme="dark"] .rate-stars .star{background:#1b2431;border-color:#2c3a4d;color:#4b5a6e}
html[data-theme="dark"] .rate-stars .star.on{background:#33290f;border-color:#6b5316;color:#f5b73b}
html[data-theme="dark"] .rate-bar{background:#243044}
