*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}
  .button,button.button{border:0;border-radius:6px;padding:10px 14px;background:var(--primary);color:var(--on-primary);font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px}.button.secondary,.button.neutral{border:1px solid var(--border-2);background:var(--surface);color:var(--text)}.button.danger{background:var(--danger)}.button.primary{background:var(--primary)}.inline-action{display:inline}
  .admin-shell{min-height:100vh;display:grid;grid-template-columns:270px minmax(0,1fr)}.sidebar{background:var(--sidebar-bg);color:var(--sidebar-text);padding:18px;display:flex;flex-direction:column;gap:20px;min-width:0}.sidebar [hidden]{display:none!important}.sidebar-collapsed .admin-shell{grid-template-columns:minmax(0,1fr)}.sidebar-collapsed .sidebar{display:none}.sidebar-collapsed .workspace{grid-column:1/-1}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand strong{min-width:0;overflow:hidden;text-overflow:ellipsis}.brand-logo,.brand-mark{display:grid;place-items:center;width:54px;height:54px;flex:0 0 54px;border-radius:10px}.brand-logo{overflow:hidden;background:var(--sidebar-bg-2);border:1px solid var(--sidebar-border);padding:4px}.brand-logo img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;border-radius:7px}.brand-mark{background:var(--primary);color:var(--on-primary);font-weight:700}.brand-logo-fallback{display:none;width:100%;height:100%;flex-basis:auto}.brand-logo--unavailable img{display:none}.brand-logo--unavailable .brand-logo-fallback{display:grid}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.sidebar-search{display:grid;gap:6px;margin-top:-4px}.sidebar-search input{width:100%;min-height:40px;border:1px solid var(--sidebar-border);border-radius:10px;background:var(--sidebar-bg-2);color:var(--sidebar-text);padding:9px 12px;font:inherit}.sidebar-search input::placeholder{color:var(--sidebar-text-2)}.sidebar-search input:focus{outline:2px solid rgba(77,166,191,.35);border-color:var(--sidebar-accent);background:var(--sidebar-hover)}.sidebar-search small{color:var(--sidebar-text-2);font-size:12px}.sidebar nav{display:grid;gap:8px;overflow:auto}.sidebar nav a,.menu-group summary{display:flex;align-items:center;gap:10px;padding:10px;border-radius:6px;color:var(--sidebar-text-2)}.sidebar nav a:hover,.sidebar nav a:focus,.menu-group summary:hover,.menu-group summary:focus{background:var(--sidebar-hover)}.sidebar nav a[aria-current="page"]{background:var(--primary);color:var(--on-primary);font-weight:700;box-shadow:inset 3px 0 0 var(--sidebar-accent)}.sidebar nav a[aria-current="page"] .menu-icon{background:var(--sidebar-bg-2)}.menu-group[open]>summary{color:var(--on-primary)}.menu-group{display:grid}.menu-group summary{cursor:pointer;font-weight:700;list-style:none}.menu-group summary::-webkit-details-marker{display:none}.submenu{display:grid;gap:2px;margin:2px 0 8px 14px;padding-left:10px;border-left:1px solid var(--sidebar-border)}.menu-group:not([open])>.submenu{display:none}.menu-group summary::after{content:'-';margin-left:auto;font-size:15px;font-weight:700;opacity:.65}.menu-group:not([open]) summary::after{content:'+'}.submenu a{padding:8px 10px;font-size:14px}.menu-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:6px;background:var(--sidebar-hover);font-size:11px;flex:0 0 auto}.sidebar-footer{margin-top:auto;border-top:1px solid var(--sidebar-border);padding-top:12px}.sidebar-logout-form{display:grid}.sidebar-logout-button{width:100%;border:1px solid var(--sidebar-border);background:var(--sidebar-hover);color:var(--sidebar-text);border-radius:6px;padding:10px;font-weight:700;text-align:left;cursor:pointer}.sidebar-logout-button:hover,.sidebar-logout-button:focus{background:var(--sidebar-hover)}
  .workspace{display:grid;grid-template-rows:auto auto auto;align-content:start;min-width:0}.topbar{height:66px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 22px}.icon-button,.notification-button{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:8px 10px}.notification-button{display:flex;gap:8px;align-items:center;cursor:pointer}.notification-button--bell{position:relative;justify-content:center;min-width:42px;height:42px;padding:0}.notification-button--bell svg{width:20px;height:20px}.notification-button--bell strong{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;display:grid;place-items:center;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:11px;line-height:1;padding:0 5px;border:1px solid var(--border)}.notification-button strong[data-has-unread=true]{background:var(--danger);color:var(--on-primary);border-radius:999px;padding:0 5px;border-color:var(--danger)}.context,.user-chip{display:grid}.user-menu{display:flex;align-items:center;gap:6px}.user-chip{border:1px solid transparent;border-radius:6px;padding:6px 8px}.user-chip:hover,.user-chip:focus{border-color:var(--border);background:var(--surface-2)}.context small,.user-chip small,.health-card small{color:var(--text-3)}.user-actions-menu,.language-menu{position:relative}.user-actions-menu summary,.language-menu summary{list-style:none;cursor:pointer}.user-actions-menu summary::-webkit-details-marker,.language-menu summary::-webkit-details-marker{display:none}.language-button{min-width:42px;height:42px;font-size:18px}.user-actions-dropdown,.language-switcher{position:absolute;right:0;top:42px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 18px 48px rgba(20,35,55,.14);z-index:25;overflow:hidden}.user-actions-dropdown{width:190px}.language-switcher{width:160px;display:grid;gap:0;font-size:14px}.language-switcher a{padding:11px 13px;border-bottom:1px solid var(--border)}.language-switcher a:last-child{border-bottom:0}.language-switcher a:hover,.language-switcher a:focus{background:var(--surface-2)}.language-switcher a[aria-current=true]{background:var(--sidebar-bg);color:var(--on-primary)}.user-menu-item{width:100%;border:0;background:var(--surface);color:var(--text);padding:11px 13px;text-align:left;font:inherit;display:block;cursor:pointer}.user-menu-item:hover,.user-menu-item:focus{background:var(--surface-2)}.user-menu-item--danger{color:var(--danger)}.user-logout-form{margin:0}.topbar-spacer{flex:1}
  .notification-menu{position:relative}.notification-menu summary{list-style:none}.notification-menu summary::-webkit-details-marker{display:none}.notification-dropdown{position:absolute;right:0;top:48px;width:min(360px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 18px 48px rgba(20,35,55,.14);z-index:20;overflow:hidden}.notification-dropdown__header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.notification-item{display:grid;gap:4px;padding:12px 14px;border-bottom:1px solid var(--border)}.notification-item span,.notification-item small,.notification-empty{color:var(--text-3)}.notification-empty{padding:16px;text-align:center}
  main{padding:18px 22px;display:grid;gap:14px;align-content:start;align-items:start}.admin-footer{padding:14px 22px;color:var(--text-3)}.breadcrumbs{display:flex;gap:8px;align-items:center;color:var(--text-3);font-size:13px}.breadcrumbs a{color:var(--primary)}.page-heading,.panel-title{display:flex;align-items:center;justify-content:space-between;gap:16px}.page-heading h1,.panel-title h2{margin:0}.page-heading p{margin:.25rem 0 0;color:var(--text-3)}.cache-pill{border:1px solid var(--success-border);background:var(--success-soft);color:var(--success-text);border-radius:999px;padding:7px 10px;font-size:13px}
  .smart-row,.stats-grid,.health-grid,.component-grid{display:grid;gap:10px}.smart-row{display:flex;flex-wrap:wrap;align-items:stretch}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px}.stat,.stats-grid>article,.health-card,.summary-card{position:relative;display:grid;gap:3px;align-content:center;min-height:82px;padding:14px 16px;line-height:1.15;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px rgba(20,35,55,.05);overflow:hidden;transition:border-color .16s,box-shadow .16s,transform .16s}.stat::before,.stats-grid>article::before,.health-card::before,.summary-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,var(--primary),var(--primary-hover));opacity:.85}.stat:hover,.stats-grid>article:hover,.health-card:hover,.summary-card:hover{border-color:var(--border-3);box-shadow:0 8px 20px rgba(20,35,55,.09);transform:translateY(-1px)}.smart-row{gap:8px}.smart-button{flex:0 0 auto;display:inline-flex;align-items:center;gap:9px;min-width:0;max-width:100%;padding:7px 12px 7px 8px;background:var(--surface);border:1px solid var(--border);border-radius:9px;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s,transform .15s}.smart-button:hover,.smart-button:focus-visible{border-color:var(--border-3);box-shadow:0 6px 16px rgba(20,35,55,.10);transform:translateY(-1px)}.smart-button__icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border-radius:8px;background:var(--surface-3);color:var(--text-2)}.smart-button__glyph{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.smart-button__body{display:grid;gap:1px;min-width:0;line-height:1.12}.smart-button__value{font-size:15px;font-weight:700;color:var(--text)}.smart-button__label{font-size:12px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat>span,.stats-grid>article>span,.health-card>span,.summary-card>span{order:2;font-size:11.5px;font-weight:600;letter-spacing:.045em;text-transform:uppercase;color:var(--text-3);line-height:1.25;overflow-wrap:anywhere}.stat>strong,.stats-grid>article>strong,.health-card>strong,.summary-card>strong{order:1;font-size:26px;font-weight:700;line-height:1.02;color:var(--text);letter-spacing:-.015em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.health-card>small{order:3;font-size:11.5px;color:var(--text-4);line-height:1.3}.stats-grid,.summary-cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.health-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.panel{padding:16px}.table-shell,.table-wrap,.table-responsive,.attendance-history-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:0 1px 2px rgba(20,35,55,.05);position:relative}.panel>.table-shell,.panel>.table-wrap,.panel>.table-responsive,.panel>.attendance-history-wrap{box-shadow:none}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{text-align:left;border-bottom:1px solid var(--border);padding:12px 14px;vertical-align:middle}tbody tr:last-child>td{border-bottom:0}tbody tr{transition:background .13s}tbody tr:hover>td{background:var(--surface-2)}td.align-right,th.align-right{text-align:right;font-variant-numeric:tabular-nums}td.align-center,th.align-center{text-align:center}.table-row-link-cell{padding:0}.table-row-link{display:block;padding:12px 14px;color:inherit;text-decoration:none}.table-row-link:hover,.table-row-link:focus{background:var(--surface-3);color:var(--text)}tbody tr.service-plan-row--published>td,.service-plan-row--published .table-row-link{background:var(--success-soft)}tbody tr.service-plan-row--draft>td,.service-plan-row--draft .table-row-link{background:var(--warning-soft)}tbody tr.service-plan-row--archived>td,.service-plan-row--archived .table-row-link{background:var(--surface-3)}tbody tr.service-plan-row--cancelled>td,.service-plan-row--cancelled .table-row-link{background:var(--danger-soft)}.service-plan-row .table-row-link:hover,.service-plan-row .table-row-link:focus{filter:brightness(.98)}tbody tr.service-plan-row:hover>td{filter:brightness(.97)}.table-actions-cell{white-space:nowrap}.table-actions{display:inline-flex;align-items:center;justify-content:flex-start;gap:4px;flex-wrap:wrap;max-width:220px}.table-actions .button{padding:6px 8px;font-size:12px;line-height:1.1;min-height:30px}.table-actions .inline-action{display:inline-flex;margin:0}.table-actions form{margin:0}.table-actions-menu{position:relative;display:inline-block}.table-actions-menu summary{list-style:none;cursor:pointer;padding:6px 10px;min-height:30px;font-size:12px}.table-actions-menu summary::-webkit-details-marker{display:none}.table-actions-menu__items{position:absolute;right:0;top:36px;z-index:15;display:grid;gap:4px;min-width:150px;padding:8px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 18px 48px rgba(20,35,55,.14)}.table-actions-menu[open] .table-actions-menu__items{position:static;margin-top:6px}.table-actions-menu__items .button,.table-actions-menu__items .inline-action,.table-actions-menu__items form{width:100%}.table-actions-menu__items .button{justify-content:flex-start;padding:8px 10px;font-size:13px}.table-actions-menu__items .inline-action{display:block}.components .component-grid{grid-template-columns:1fr 1fr 1fr}.button-row{display:flex;gap:8px;align-items:start;flex-wrap:wrap}
  .dashboard-live-region{display:grid;grid-template-columns:minmax(0,1fr);gap:22px}.dashboard-live-region>.filter-row,.dashboard-live-region>.smart-row{margin:0}.dashboard-filter{grid-template-columns:minmax(min(100%,240px),2fr) minmax(min(100%,160px),1fr);padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.dashboard-filter label{display:grid;gap:7px}.dashboard-filter .button{min-height:42px}.dashboard-quick-stats{gap:14px}.dashboard-quick-stats{gap:8px}.dashboard-totals{display:grid;gap:16px;padding:22px}.dashboard-totals .panel-title{padding-bottom:2px}.dashboard-totals .stats-grid{gap:14px}.dashboard-health{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.dashboard-health .health-card{min-height:96px}.dashboard-health .health-card small{min-height:16px;color:var(--text-3)}.dashboard-live-region>.panel{margin:0}.panel-subtitle{margin:0;color:var(--text-3);font-size:13px;line-height:1.45;max-width:78ch}.dashboard-totals .panel-subtitle{margin-top:-6px}.stat--link{text-decoration:none;color:inherit;cursor:pointer}.stat--link:hover>strong,.stat--link:focus-visible>strong{color:var(--primary-hover)}.stat--link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.dashboard-system .health-card{cursor:default}.services-setup{display:grid;gap:12px}.services-setup>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px}.services-setup>summary::-webkit-details-marker{display:none}.services-setup>summary strong{font-size:20px}.services-setup>summary::after{content:'-';margin-left:auto;font-size:18px;font-weight:700;color:var(--text-3)}.services-setup:not([open])>summary::after{content:'+'}.services-setup__badge{padding:3px 9px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:12px;font-weight:600}.services-flow{list-style:none;margin:0;padding:0;display:grid;gap:8px}.services-flow__step{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.services-flow__step--done{background:var(--success-soft);border-color:var(--success-border)}.services-flow__index{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-weight:700;font-size:13px}.services-flow__step--done .services-flow__index{background:var(--success-text);color:var(--on-primary)}.services-flow__body{display:grid;gap:2px;min-width:0;flex:1}.services-flow__body small{color:var(--text-3);font-size:12.5px;line-height:1.35}.services-flow__count{font-variant-numeric:tabular-nums;font-weight:700;font-size:18px;color:var(--text);min-width:2ch;text-align:right}
  .plan-hero{display:grid;gap:14px}.plan-hero__top{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.plan-hero__status{font-size:15px}.plan-hero__timing{display:grid;line-height:1.15}.plan-hero__timing strong{font-size:20px;font-variant-numeric:tabular-nums}.plan-hero__timing small{color:var(--text-3);font-size:12.5px}.plan-hero__actions{margin-left:auto}.plan-hero__facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:0;padding-top:12px;border-top:1px solid var(--border)}.plan-hero__facts dt{font-size:11.5px;font-weight:600;letter-spacing:.045em;text-transform:uppercase;color:var(--text-3)}.plan-hero__facts dd{margin:2px 0 0;font-size:14px;color:var(--text);overflow-wrap:anywhere}
  .plan-tabs{display:grid;gap:0}.plan-tabs__radio{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.plan-tabs__bar{display:flex;gap:4px;flex-wrap:wrap;border-bottom:2px solid var(--border);padding:0 2px}.plan-tabs__tab{display:inline-flex;align-items:center;gap:7px;padding:11px 15px;border-radius:9px 9px 0 0;cursor:pointer;color:var(--text-2);font-weight:600;font-size:14px;border:1px solid transparent;border-bottom:0;margin-bottom:-2px;transition:background .14s,color .14s}.plan-tabs__tab:hover{background:var(--surface-2);color:var(--text)}.plan-tabs__count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:12px;font-variant-numeric:tabular-nums}.plan-tabs__panel{display:none;padding-top:14px;gap:14px;min-width:0}.plan-tabs__panel>*{min-width:0}.plan-tabs__panel .table-shell{min-width:0;max-width:100%}.plan-tabs__panel>*{margin-bottom:14px}.plan-tabs__panel>*:last-child{margin-bottom:0}
  .plan-tabs__radio:focus-visible~.plan-tabs__bar .plan-tabs__tab{outline:2px solid var(--primary);outline-offset:2px}
  .services-plan-assignment-grid{display:grid;gap:12px}.services-plan-assignment-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;padding:14px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}.services-plan-assignment-row__head{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px}.services-plan-assignment-row__number{display:grid;place-items:center;width:26px;height:26px;border-radius:999px;background:var(--primary);color:var(--on-primary);font-weight:700;font-size:13px}.services-plan-assignment-row>label{display:grid;gap:5px;min-width:0}.services-plan-assignment-row>label>span{font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}.services-plan-assignment-row select,.services-plan-assignment-row input{min-height:40px;width:100%;min-width:0}.services-plan-assignment-actions{justify-content:flex-end}
  .team-hero{display:grid;gap:12px}.team-hero__top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.team-hero__mark{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:12px;color:var(--on-primary);font-weight:700;font-size:19px}.team-hero__ident{display:grid;line-height:1.2;min-width:0}.team-hero__ident strong{font-size:18px}.team-hero__ident small{color:var(--text-3);font-size:12.5px}.team-hero__actions{margin-left:auto}.team-hero__description{margin:0;color:var(--text-2);font-size:14px;line-height:1.5;max-width:80ch}.team-hero__caps{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:8px}.team-hero__cap{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;background:var(--surface-3);color:var(--text-4);font-size:12.5px;font-weight:600}.team-hero__cap--on{background:var(--success-soft);color:var(--success-text)}
  @media(max-width:860px){.team-hero__actions{margin-left:0;width:100%}}
  @media(max-width:860px){.plan-hero__actions{margin-left:0;width:100%}.plan-tabs__tab{flex:1 1 auto;justify-content:center}.services-plan-assignment-row{grid-template-columns:minmax(0,1fr)}}@media(max-width:860px){.services-flow__step{flex-wrap:wrap}.services-flow__body{flex-basis:100%;order:2}.services-flow__count{order:1;margin-left:auto}.services-flow__step .button{order:3;width:100%}}
  .filter-row,.table-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--admin-filter-min)),1fr));gap:12px;align-items:end;margin:14px 0}.table-filters{grid-template-columns:2fr 1fr 1fr auto;margin:0}.table-filters label{display:grid;gap:7px;font-size:13px}.filters-grid{display:grid;grid-template-columns:minmax(min(100%,220px),2fr) minmax(min(100%,150px),1fr) minmax(min(100%,150px),1fr) auto;gap:12px;align-items:end;margin:12px 0}.filters-grid label{display:grid;gap:7px;font-size:13px}.collapsible-panel{display:grid;gap:0;padding:0;overflow:hidden}.collapsible-panel__summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;cursor:pointer;list-style:none}.collapsible-panel__summary::-webkit-details-marker{display:none}.collapsible-panel__summary strong{font-size:18px}.collapsible-panel__summary span{color:var(--text-3);font-size:13px}.collapsible-panel__summary::after{content:"+";display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--border-2);border-radius:999px;color:var(--primary);font-weight:800}.collapsible-panel[open]>.collapsible-panel__summary::after{content:"-"}.collapsible-panel--sticky>.collapsible-panel__summary{position:sticky;top:66px;z-index:3;background:var(--surface);border-bottom:1px solid var(--border)}.collapsible-panel__body{display:grid;gap:12px;padding:0 16px 16px}.compact-table-shell{border:1px solid var(--border);border-radius:8px}.compact-table{font-size:14px}.compact-table th{background:var(--surface-2)}.muted{color:var(--text-3)}.module-form,.generic-form{display:grid;gap:14px;max-width:var(--admin-form-max)}.form-section{border:1px solid var(--border);border-radius:8px;padding:14px;display:grid;gap:12px 16px;grid-template-columns:repeat(auto-fit,minmax(var(--admin-col-min),1fr));align-items:start}.form-section>legend,.form-section>.section-description,.form-section>.form-field--full{grid-column:1/-1}.form-section--grid{align-items:start}.form-section--grid .form-field{min-width:0}.form-section legend{font-weight:700;padding:0 6px}.section-description{color:var(--text-3);margin:0}.form-field,.upload-field,.rich-editor{display:grid;gap:7px;font-size:13px}.form-field select[multiple]{min-height:132px;padding:8px 10px;line-height:1.6}.form-field select[multiple] option{padding:3px 4px;border-radius:4px}[hidden]{display:none!important}.form-field input:not([type=checkbox]):not([type=radio]),.form-field select,.form-field textarea,.filter-row input,.filter-row select,.table-filters input,.table-filters select,.filters-grid input,.filters-grid select,.rich-editor textarea,.rich-editor-surface{width:100%;border:1px solid var(--border-2);border-radius:8px;padding:12px 14px;background:var(--surface);line-height:1.5;overflow:auto;resize:vertical}.rich-editor-surface{min-height:180px;max-height:460px;overflow:auto;line-height:1.55;outline:none}.rich-editor-surface:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(33,90,109,.12)}.rich-editor-toolbar{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding:7px 8px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.rich-editor-button,.rich-editor-select{border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);min-height:30px;padding:4px 8px;font:inherit;font-size:12.5px;cursor:pointer}.rich-editor-button:hover,.rich-editor-select:hover{border-color:var(--border-3);background:var(--surface-2)}.rich-editor-button{min-width:34px;font-weight:700}.rich-editor-button--icon{font-size:17px;line-height:1}.rich-editor-button--icon span{display:block;min-width:18px}.rich-editor-button--align-center span{transform:scaleX(.78)}.rich-editor-button--align-right span{transform:scaleX(.56);transform-origin:right}.rich-editor-button.is-active{border-color:var(--primary);background:var(--primary-soft-2);color:var(--text)}.rich-editor-select{max-width:180px}.rich-editor-select option{font-size:14px}.rich-editor-button:hover,.rich-editor-button:focus,.rich-editor-select:hover,.rich-editor-select:focus{border-color:var(--primary);background:var(--primary-soft)}.field-label{display:inline}.required-asterisk{color:var(--danger);font-weight:700;margin-left:4px}.field-control{display:flex;align-items:center}.field-prefix{border:1px solid var(--border-2);border-right:0;border-radius:6px 0 0 6px;padding:10px;background:var(--surface-2);color:var(--text-2)}.form-field--money input{border-radius:0 6px 6px 0}.choice-field{border:1px solid var(--border);border-radius:8px;padding:12px;display:grid;gap:8px}.choice-field legend{font-weight:700}.choice-field--single{padding:10px 12px}.choice-field--single>label{font-weight:600;max-width:none}.choice-field label{display:flex;align-items:flex-start;gap:8px;max-width:max-content;line-height:1.35}.choice-field input[type=checkbox],.choice-field input[type=radio],.check input[type=checkbox],.check input[type=radio],.settings-check input[type=checkbox]{width:18px;height:18px;min-width:18px;flex:0 0 18px;margin:1px 0 0;padding:0;border:0;background:transparent;accent-color:var(--primary)}.choice-field span,.check span,.settings-check span{min-width:0}.upload-field img,.upload-field video{width:min(100%,260px);max-height:190px;object-fit:contain;border-radius:8px;border:1px solid var(--border);background:var(--surface-2)}.upload-field audio{width:min(420px,100%)}.upload-document{display:inline-flex;border:1px solid var(--border-2);border-radius:6px;padding:10px;color:var(--primary)}.upload-placeholder{display:grid;place-items:center;min-height:96px;border:1px dashed var(--border-2);border-radius:8px;color:var(--text-3)}.social-profile-summary{max-width:920px}.social-profile-summary .profile-cover{height:160px;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--surface-2)}.social-profile-summary .profile-cover img{width:100%;height:100%;object-fit:cover;display:block}.social-profile-summary .profile-avatar{width:84px;height:84px;flex:0 0 84px;overflow:hidden;border:3px solid var(--surface);border-radius:999px;background:var(--surface-3);display:grid;place-items:center;font-size:26px;font-weight:700;color:var(--text-2);box-shadow:0 0 0 1px var(--border)}.social-profile-summary .profile-avatar img{width:100%;height:100%;object-fit:cover;display:block}.social-profile-activity-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.social-profile-activity{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface);display:grid;gap:8px}.social-profile-activity__head{display:flex;align-items:center;justify-content:space-between;gap:10px}.social-profile-activity__type{display:inline-flex;align-items:center;gap:8px;font-weight:700}.social-profile-activity__icon{width:32px;height:32px;border-radius:999px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center}.social-profile-activity p{margin:0;color:var(--text-2)}.social-profile-activity small{color:var(--text-3)}.field-help{color:var(--text-3)}.field-error{color:var(--danger)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--admin-detail-min),1fr));gap:12px;margin:14px 0 0}.detail-grid div{border:1px solid var(--border);border-radius:8px;padding:12px}.detail-grid dt{color:var(--text-3);font-size:13px}.detail-grid dd{margin:4px 0 0;font-weight:700;word-break:break-word;white-space:pre-wrap}.detail-grid dd p{margin:.35rem 0}.detail-view{display:grid;gap:14px}.detail-actions{justify-content:flex-end}.attachment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.attachment-card{border:1px solid var(--border);border-radius:8px;padding:12px;display:grid;gap:8px}.social-feed-media-grid{grid-template-columns:repeat(auto-fit,minmax(220px,320px));align-items:start}.social-feed-media-card{max-width:340px}.social-feed-media-preview{width:100%;max-width:300px;max-height:220px;object-fit:contain;justify-self:center;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.table-thumb{width:64px;height:48px;object-fit:contain;background:var(--surface-2);border:1px solid var(--border);border-radius:6px}.table-thumb-wrap{position:relative;display:inline-grid;place-items:center;min-width:64px;min-height:48px;color:var(--text-3)}.table-thumb-count{position:absolute;right:-6px;bottom:-6px;background:var(--primary);color:var(--on-primary);border-radius:999px;font-size:11px;font-weight:700;line-height:1;padding:4px 6px}.table-thumb-wrap--file{border:1px solid var(--border);border-radius:6px;background:var(--surface-2);font-size:20px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;color:var(--text-3)}.table-sort{display:flex;align-items:center;gap:6px;width:100%;border:0;background:transparent;font:inherit;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);padding:11px 14px;cursor:pointer;text-align:inherit;transition:background .13s,color .13s}.align-right .table-sort{justify-content:flex-end}.align-center .table-sort{justify-content:center}.table-sort:hover{background:var(--surface-3);color:var(--text)}.table-sort:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.table-sort__indicator{font-size:11px;line-height:1;opacity:.32;transition:opacity .13s}.table-sort__indicator:empty::before{content:"\21C5"}.table-sort:hover .table-sort__indicator{opacity:.7}[aria-sort="asc"] .table-sort,[aria-sort="desc"] .table-sort{color:var(--text);background:var(--surface-4)}[aria-sort="asc"] .table-sort__indicator,[aria-sort="desc"] .table-sort__indicator{opacity:1}.align-center{text-align:center}.align-right{text-align:right}.calendar-panel{display:grid;gap:12px}.calendar-panel h2{margin:0}.calendar-panel h2::first-letter{text-transform:uppercase}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-weekday{font-size:12px;color:var(--text-3);font-weight:700;text-transform:uppercase}.calendar-day{min-height:116px;border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--surface-2);display:grid;align-content:start;gap:6px}.calendar-day--empty{background:transparent;border-style:dashed}.calendar-event{display:grid;gap:2px;border-left:3px solid var(--primary);background:var(--surface);border-radius:6px;padding:6px;font-size:12px}.calendar-event span{color:var(--text-3)}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-bottom:4px;border-bottom:1px solid var(--border)}.calendar-toolbar__title{text-align:center;flex:1 1 auto;min-width:0}.calendar-toolbar__title h2{margin:0;font-size:19px}.calendar-toolbar__title h2::first-letter{text-transform:uppercase}.calendar-toolbar__title span{color:var(--text-3);font-size:13px}.calendar-nav{white-space:nowrap}.calendar-nav::first-letter{text-transform:uppercase}.calendar-day__number{color:var(--text-2);font-size:13px}.calendar-day--today{border-color:var(--primary);background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary)}.calendar-day--today .calendar-day__number{color:var(--primary)}.calendar-day--has-events{background:var(--surface)}.calendar-note{margin:0;color:var(--text-3);text-align:center}.calendar-note a{margin-left:6px}@media(max-width:640px){.calendar-toolbar{flex-direction:column;align-items:stretch}.calendar-nav{text-align:center}}.event-title{display:block;font-weight:600;color:var(--text)}.event-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}.event-badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;line-height:1.5;letter-spacing:.01em;white-space:nowrap}.event-badge--video{background:var(--purple-soft);color:var(--purple-text)}.event-badge--registration{background:var(--success-soft);color:var(--success-text)}.event-when__day{display:block;font-variant-numeric:tabular-nums}.event-when__hours{display:block;margin-top:3px;color:var(--text-3);font-size:12.5px;font-variant-numeric:tabular-nums}.event-reg{display:grid;gap:14px}.event-reg .panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.event-status{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:700}.event-status--open{background:var(--success-soft);color:var(--success-text)}.event-status--closed{background:var(--surface-3);color:var(--text-3)}.event-reg__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:0}.event-reg__metric{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface-2)}.event-reg__metric dt{color:var(--text-3);font-size:12px;margin:0}.event-reg__metric dd{margin:4px 0 0;font-size:22px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.event-reg__bar{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}.event-reg__bar>span{display:block;height:100%;background:var(--primary);border-radius:999px}.event-reg__block{display:grid;gap:8px}.event-reg__block h3{margin:0;font-size:14px;color:var(--text-2)}.event-chips{display:flex;flex-wrap:wrap;gap:6px}.event-chip{display:inline-flex;align-items:center;border-radius:999px;padding:4px 11px;background:var(--surface-3);color:var(--text-2);font-size:12.5px}.event-chip--required{background:var(--primary-soft-2);color:var(--text);font-weight:700}.event-reg__link a{word-break:break-all}.check{display:inline-flex;align-items:flex-start;gap:6px;font-size:13px;color:var(--text-2);line-height:1.35}.permissions-panel{max-width:100%;min-width:0}.permissions-panel .table-shell{max-width:100%;border:1px solid var(--border);border-radius:10px}.permissions-table{min-width:980px;font-size:13px;border-collapse:separate;border-spacing:0}.permissions-table th,.permissions-table td{padding:8px 7px;vertical-align:middle}thead th{white-space:normal;background:var(--surface-2);line-height:1.15;position:sticky;top:0;z-index:2;border-bottom:1px solid var(--border);padding:0}thead th>*:not(.table-sort){display:block;padding:11px 14px;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}thead th:not(:has(.table-sort)){padding:11px 14px;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}.permissions-table tbody th{min-width:170px}.permissions-heading{display:grid!important;gap:2px;justify-items:center;align-items:start;line-height:1.08}.permissions-heading-label,.permissions-heading-subtext{display:block!important;width:100%;text-align:center}.permissions-heading-label{font-weight:800;font-size:13px}.permissions-heading-subtext{color:var(--text-3)!important;font-size:10px!important;font-weight:400!important;line-height:1.1!important;white-space:normal!important}.permissions-module-name{display:block;font-weight:800}.permissions-module-group{display:inline-flex;margin-top:5px;padding:3px 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:12px}.permissions-table .check{justify-content:center}.permissions-table .check span{display:none}.permissions-table select{min-width:118px;max-width:150px;padding:7px}.permissions-filters{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(240px,2fr)}.permissions-actions{justify-content:space-between;margin-top:12px}.permissions-audit small{display:block;color:var(--text-3);margin-top:4px}.permissions-legend{border:1px solid var(--primary-soft-border);background:var(--info-soft);border-radius:10px;padding:0;margin:12px 0}.permissions-legend>summary{cursor:pointer;list-style:none;padding:11px 14px;font-weight:700;color:var(--text)}.permissions-legend>summary::-webkit-details-marker{display:none}.permissions-legend ul{margin:0;padding:0 16px 14px 32px;display:grid;gap:6px;color:var(--text-2);font-size:13px;line-height:1.5}.permissions-required{color:var(--danger);font-weight:700;margin-left:3px;text-decoration:none;border:0}.permissions-table thead tr:first-child th[data-role-column]{background:var(--primary-soft-2);color:var(--text)!important;font-size:12.5px;border-left:2px solid var(--primary-soft-border);border-right:2px solid var(--primary-soft-border)}.permissions-table thead th:first-child,.permissions-table tbody th:first-child{position:sticky;left:0;z-index:3;background:var(--surface-2);box-shadow:2px 0 4px -2px rgba(16,35,44,.18)}.permissions-table tbody th:first-child{z-index:1;background:var(--surface)}.permissions-group-row th,.permissions-group-row td{background:var(--surface-3);border-bottom:1px solid var(--primary-soft-border)}.permissions-group-row th{position:sticky;left:0;z-index:1;text-align:left;padding:0!important;box-shadow:none}.permissions-group-toggle{width:100%;display:flex;align-items:center;gap:10px;border:0;background:transparent;font:inherit;font-weight:700;color:var(--text);padding:10px 14px;cursor:pointer;text-align:left}.permissions-group-toggle:hover{background:var(--surface-4)}.permissions-group-toggle__chevron{width:8px;height:8px;border-right:2px solid var(--border-2);border-bottom:2px solid var(--border-2);transform:rotate(45deg);transition:transform .15s;flex:0 0 auto}.permissions-group-toggle[aria-expanded="false"] .permissions-group-toggle__chevron{transform:rotate(-45deg)}.permissions-group-toggle__count{margin-left:auto;background:var(--primary-soft-2);color:var(--primary);border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:700}.permissions-table thead tr:first-child th[data-role-column]>*{color:var(--text)!important}
  .services-assignments-filters{grid-template-columns:repeat(auto-fit,minmax(var(--admin-filter-min),1fr));max-width:var(--admin-form-max)}.services-assignments-filters .form-field{min-width:0}.services-assignments-filters .button{width:100%;min-width:0}
  .settings-workspace{display:grid;grid-template-columns:240px minmax(0,1fr);gap:16px;align-items:start}.settings-tabs{position:sticky;top:82px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px;display:grid;gap:4px}.settings-tabs a{border-radius:6px;padding:10px;color:var(--text-2)}.settings-tabs a:hover,.settings-tabs a:focus,.settings-tabs a.is-active{background:var(--primary-soft);color:var(--text)}.settings-form{display:grid;gap:14px;min-width:0}.settings-panel{scroll-margin-top:82px}.settings-copy{margin:4px 0 0;color:var(--text-3)}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--admin-col-min),1fr));gap:14px;margin-top:14px}.settings-copy--wide,.settings-upload-field{grid-column:1/-1}.settings-upload-field input[type=file]{width:100%;border:1px solid var(--border-2);border-radius:6px;padding:10px;background:var(--surface)}.settings-feature-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.settings-check{border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;gap:10px;align-items:flex-start;background:var(--surface)}.settings-check input{margin-top:3px}.settings-check span{display:grid;gap:3px}.settings-check small{color:var(--text-3)}.settings-health{border:1px solid var(--border);border-radius:8px;padding:12px;display:grid;gap:4px;background:var(--surface-2)}.settings-health--configured,.settings-health--ok{border-color:var(--success-border);background:var(--success-soft)}.settings-health--degraded,.settings-health--missing{border-color:var(--warning-border);background:var(--warning-soft)}.settings-health--disabled{background:var(--bg)}.settings-instructions,.settings-public-links{grid-column:1/-1}.settings-instructions{border:1px solid var(--border);border-radius:8px;padding:12px}.settings-instructions summary{cursor:pointer;font-weight:700}.settings-savebar{position:sticky;bottom:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;justify-content:flex-end;align-items:center;gap:12px;box-shadow:0 -10px 30px rgba(20,35,55,.06)}[data-settings-status]{color:var(--primary);font-weight:700}
  .videos-workspace,.audios-workspace,.livestreams-workspace,.radio-workspace,.photos-workspace{display:grid;grid-template-columns:minmax(0,920px) minmax(260px,360px);gap:16px;align-items:start}.videos-preview,.audios-preview,.audios-player-preview,.media-preview{display:grid;gap:10px;align-content:start}.videos-preview img,.videos-preview video,.audios-preview img,.audios-preview video,.audios-player-preview img,.media-preview img,.media-preview video{width:min(100%,280px);max-height:200px;justify-self:start;object-fit:contain;border:1px solid var(--border);border-radius:8px;background:var(--surface-2)}.audios-preview audio,.audios-player-preview audio,.media-preview audio{width:100%}.reading-detail-panel{display:grid;gap:12px}.reading-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--admin-detail-min),1fr));gap:12px}.reading-content-card{border:1px solid var(--border);border-radius:8px;padding:12px;background:var(--surface);min-width:0}.reading-content-card--wide{grid-column:1/-1}.reading-content-card h3{margin:0 0 8px;font-size:15px;color:var(--text)}.reading-content-scroll{max-height:360px;overflow:auto;padding-right:8px;color:var(--text-2);line-height:1.55}.reading-content-scroll>*:first-child{margin-top:0}.reading-content-scroll>*:last-child{margin-bottom:0}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,120px));gap:10px;align-content:start}.gallery-grid img{width:100%;max-width:120px;aspect-ratio:1;object-fit:contain;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.videos-upload-progress{grid-column:1/-1;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);padding:12px;display:grid;gap:8px}.videos-upload-progress progress{width:100%;height:16px}
  .reading-content-scroll{white-space:pre-wrap}.reading-content-scroll p{margin:.45rem 0}.admin-long-text{white-space:pre-wrap;line-height:1.55;overflow-wrap:anywhere}
  .status-badge{display:inline-flex;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:700}.status-badge--success{background:var(--success-soft);color:var(--success-text)}.status-badge--warning{background:var(--warning-soft);color:var(--warning-text)}.status-badge--danger{background:var(--danger-soft);color:var(--danger)}.status-badge--neutral{background:var(--surface-3);color:var(--text-2)}.inbox-delivery{list-style:none;margin:0;padding:0;display:grid;gap:6px;max-width:520px}.inbox-delivery__item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 10px;border-radius:8px;background:var(--surface-2)}.inbox-delivery__when{font-size:12px;color:var(--text-3)}.chip-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{display:inline-flex;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:600;line-height:1.5;background:var(--surface-3);color:var(--text-2)}.chip--info{background:var(--info-soft);color:var(--info-text)}.chip--warning{background:var(--warning-soft);color:var(--warning-text)}.chip--success{background:var(--success-soft);color:var(--success-text)}.state{display:grid;gap:4px;padding:16px;border-radius:8px}.state--empty{background:var(--surface-2);color:var(--text-3)}.state--error{background:var(--danger-soft);color:var(--danger)}.flash-stack{display:grid;gap:8px}.flash{padding:12px;border-radius:8px}.flash--success{background:var(--success-soft)}.flash--info{background:var(--info-soft)}.flash--warning{background:var(--warning-soft)}.flash--error{background:var(--danger-soft)}
  .table-actions{max-width:240px}.action-icon-button{width:42px;min-width:42px;height:42px;min-height:42px;padding:0;border:1px solid var(--border-2);background:var(--surface);color:var(--primary);line-height:1;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:0;vertical-align:middle;overflow:visible}.action-icon-button:hover,.action-icon-button:focus{border-color:var(--primary);background:var(--primary-soft)}.button.primary.action-icon-button{border-color:var(--primary);background:var(--primary);color:var(--on-primary)}.button.primary.action-icon-button:hover,.button.primary.action-icon-button:focus{background:var(--primary-active);color:var(--on-primary)}.button.danger.action-icon-button,.action-icon-button.danger,.action-icon-button--trash{border-color:var(--danger);background:var(--danger);color:var(--on-primary)}.button.danger.action-icon-button:hover,.button.danger.action-icon-button:focus,.action-icon-button.danger:hover,.action-icon-button.danger:focus,.action-icon-button--trash:hover,.action-icon-button--trash:focus{border-color:var(--danger-strong);background:var(--danger-strong);color:var(--on-primary)}.button.secondary.action-icon-button{background:var(--surface);color:var(--primary)}.button.secondary.action-icon-button:hover,.button.secondary.action-icon-button:focus{background:var(--primary-soft);color:var(--primary-active)}.button.secondary.action-icon-button--trash{border-color:var(--danger-border);background:var(--surface);color:var(--danger)}.button.secondary.action-icon-button--trash:hover,.button.secondary.action-icon-button--trash:focus{background:var(--danger-soft);color:var(--danger-strong)}.action-icon-button--edit{color:var(--primary)}.action-icon-button--save,.action-icon-button--plus{color:var(--success)}.button.primary.action-icon-button--save,.button.primary.action-icon-button--plus{color:var(--on-primary)}.action-icon-button--close{color:var(--text-2)}.table-actions .table-action-icon{width:38px;min-width:38px;height:38px;min-height:38px;padding:0}.table-actions .inline-action{display:inline-flex;align-items:center;margin:0}.form-action-row,.detail-actions{align-items:center}.form-action-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 16px;line-height:1;white-space:nowrap;width:max-content;max-width:100%;justify-self:start}.form-action-button>svg{flex:0 0 18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important}.action-icon-button .table-action-icon__glyph,.action-icon-button>svg,.table-action-icon__glyph{width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;display:block!important;flex:0 0 20px!important;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.table-actions .table-action-icon__glyph,.table-actions .action-icon-button>svg{width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;flex-basis:18px!important}.action-icon-button--trash .table-action-icon__glyph,.button.danger.action-icon-button .table-action-icon__glyph,.button.danger.action-icon-button>svg{stroke-width:2.35}
  /* Aviso permanente de una pagina (no un flash): explica una regla vigente o
     un ajuste que condiciona lo que se ve. La barra lateral de color le da
     jerarquia sin robarle protagonismo al contenido. */
  .module-notice{display:grid;gap:4px;padding:12px 14px;border-radius:8px;border-left:4px solid var(--border-3);background:var(--surface-2);color:var(--text-2);margin:0 0 14px}
  .module-notice strong{color:var(--text);font-size:14px}
  .module-notice p{margin:0;font-size:13px;line-height:1.55}
  .module-notice--info{border-left-color:var(--info);background:var(--info-soft)}
  .module-notice--warning{border-left-color:var(--warning);background:var(--warning-soft)}
  .module-notice--success{border-left-color:var(--success);background:var(--success-soft)}
  /* Galeria de fotos moderables (testimonios). */
  .photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-top:6px}
  .photo-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface)}
  .photo-card--pending{border-color:var(--warning-border)}
  .photo-card--rejected{border-color:var(--danger-border);opacity:.72}
  .photo-card__frame{display:block;aspect-ratio:4/3;background:var(--surface-3);overflow:hidden}
  .photo-card__frame img{width:100%;height:100%;object-fit:cover;display:block}
  .photo-card__body{display:grid;gap:6px;padding:10px 12px}
  .photo-card__meta{margin:0;font-size:12px;color:var(--text-3);word-break:break-word}
  .photo-card__actions{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 12px}
  .photo-card__actions form{margin:0}
  .photo-thumbs{display:flex;gap:4px;align-items:center}
  .photo-thumbs img{width:34px;height:34px;object-fit:cover;border-radius:4px;border:1px solid var(--border)}
  .safe-error-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}
  @media(max-width:1100px){.dashboard-health{grid-template-columns:repeat(2,minmax(170px,1fr))}}
  @media(max-width:860px){body{overflow-x:hidden}.admin-shell,.sidebar-collapsed .admin-shell{grid-template-columns:minmax(0,1fr)}.workspace,.sidebar-collapsed .workspace{grid-column:1/-1;min-width:0}.sidebar,.sidebar-collapsed .sidebar{display:none}.menu-open .sidebar,.menu-open.sidebar-collapsed .sidebar{display:flex;position:fixed;inset:0 auto 0 0;width:min(86vw,340px);max-width:340px;z-index:30;box-shadow:24px 0 60px rgba(5,18,25,.32);overflow:auto}.menu-open::after{content:"";position:fixed;inset:0;background:rgba(6,20,28,.42);z-index:25}.menu-open .sidebar{z-index:31}.topbar{height:auto;min-height:58px;padding:8px 10px;gap:8px;flex-wrap:wrap}.topbar .context{min-width:0;max-width:calc(100vw - 178px)}.topbar .context span,.topbar .context small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-spacer{display:none}.language-button,.icon-button{min-width:40px;min-height:40px}.notification-button{min-height:40px;padding:7px 9px}.notification-button--bell{min-width:40px;height:40px}.user-menu{margin-left:auto}.user-chip{display:none}.user-actions-dropdown,.language-switcher{right:0;left:auto}.notification-dropdown{position:fixed;left:10px;right:10px;top:62px;width:auto;max-height:70vh;overflow:auto}main{padding:14px 10px;gap:12px}.admin-footer{padding:12px 10px}.breadcrumbs{overflow:auto;white-space:nowrap;padding-bottom:2px}.page-heading,.panel-title,.pagination{align-items:stretch;flex-direction:column}.page-heading h1{font-size:clamp(28px,9vw,40px);line-height:1.08}.panel{padding:12px;border-radius:10px;min-width:0}.summary-cards,.components .component-grid,.filter-row,.filters-grid,.table-filters,.detail-grid,.attachment-grid,.settings-workspace,.settings-grid,.settings-feature-grid,.videos-workspace,.audios-workspace,.livestreams-workspace,.radio-workspace,.photos-workspace,.reading-detail-grid,.dashboard-filter,.dashboard-health{grid-template-columns:minmax(0,1fr)!important}.smart-row{display:flex;flex-wrap:wrap}.stat,.stats-grid>article,.health-card,.summary-card{max-width:none;min-width:0;width:100%}.dashboard-totals{padding:14px}.dashboard-totals .stats-grid{grid-template-columns:minmax(0,1fr)!important}.dashboard-health .health-card,.dashboard-quick-stats .smart-button{min-height:auto}.filter-row,.table-filters{gap:10px}.button-row{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.button-row .button,.button-row button.button{width:100%}.button-row .action-icon-button,.button-row button.action-icon-button{width:40px;min-width:40px;height:40px;min-height:40px;justify-self:start}.module-form,.generic-form{max-width:none;width:100%}.form-section{padding:12px}.form-section--grid{grid-template-columns:minmax(0,1fr)}.field-control{min-width:0}.form-field input:not([type=checkbox]):not([type=radio]),.form-field select,.form-field textarea,.filter-row input,.filter-row select,.table-filters input,.table-filters select,.rich-editor textarea,.rich-editor-surface{min-width:0;font-size:16px}.table-shell,.table-wrap,.table-responsive,.attendance-history-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:10px}thead th{position:static}th,td{padding:10px 12px}.table-shell table{min-width:720px}.permissions-table{min-width:760px}.table-actions-menu__items{min-width:130px}.settings-tabs{position:static;display:flex;overflow-x:auto;gap:6px}.settings-tabs a{white-space:nowrap;flex:0 0 auto}.settings-savebar{position:static;display:grid}.calendar-grid{grid-template-columns:1fr}.calendar-weekday{display:none}.calendar-day{min-height:auto}.detail-grid dd,.admin-long-text{overflow-wrap:anywhere}.upload-field img,.upload-field video,.videos-preview img,.videos-preview video,.audios-preview img,.audios-preview video,.audios-player-preview img,.media-preview img,.media-preview video{width:100%;max-width:100%;height:auto}.social-feed-media-grid{grid-template-columns:minmax(0,1fr)}}
  @media(max-width:520px){.topbar .context{max-width:calc(100vw - 154px)}.page-heading h1{font-size:32px}.panel-title h2{font-size:24px}.table-shell table{min-width:640px}.detail-grid,.attachment-grid{gap:10px}.sidebar{padding:14px}.brand-logo,.brand-mark{width:48px;height:48px;flex-basis:48px}}


/* ------------------------------------------------------------- tipografia */
body{font-family:"Inter","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;background:var(--bg);color:var(--text)}
h1{font-size:24px;line-height:1.2;letter-spacing:-.018em;font-weight:700}
h2{font-size:18px;line-height:1.25;letter-spacing:-.012em;font-weight:700}
h3{font-size:15px;line-height:1.3;font-weight:700}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px}

/* ------------------------------------------------- armazon siempre visible */
/* El menu, el logo y el buscador no deben perderse al desplazar la pagina:
   la barra lateral se ancla a la ventana y solo hace scroll su lista. */
.admin-shell{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;max-height:100vh;overflow:hidden;padding:14px 12px;gap:12px;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border)}
.sidebar>.brand,.sidebar>.sidebar-search{flex:0 0 auto}
/* align-content:start no es cosmetico (y va sin comillas invertidas: esta
   hoja vive en una plantilla literal y una sola la cerraria): la navegacion
   es una rejilla que
   ocupa todo el alto sobrante de la barra, y sin esto sus filas se ESTIRAN
   para repartirselo. Con el menu completo no se nota; al buscar "devo" queda
   un solo grupo y su cabecera pasaba a medir 299 px, con un hueco enorme
   hasta el resultado. Lo mismo le ocurria a un rol con pocos modulos. */
.sidebar nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;gap:2px;padding-right:4px;align-content:start;scrollbar-width:thin;scrollbar-color:var(--sidebar-border) transparent}
.menu-group{align-content:start}
.menu-group>summary{min-height:0}
.sidebar nav::-webkit-scrollbar{width:8px}
.sidebar nav::-webkit-scrollbar-thumb{background:var(--sidebar-border);border-radius:var(--radius-pill)}
.sidebar nav::-webkit-scrollbar-track{background:transparent}
.sidebar-footer{flex:0 0 auto;margin-top:0;padding-top:10px}
.sidebar nav a>span:not(.menu-icon),.menu-group>summary>span:not(.menu-icon),.sidebar-logout-button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* --------------------------------------------- barra lateral contraida */
/* Contraida NO es oculta. Queda un rail de iconos que sigue mostrando el
   logo, el buscador y TODOS los modulos; al pasar el raton o al enfocar con
   el teclado se despliega por encima del contenido, sin mover la pagina.
   Asi se cumplen a la vez las dos condiciones del encargo: contraida por
   defecto y logo, nombre y buscador siempre visibles.
   Solo en escritorio: por debajo de 861px el menu ya es un cajon lateral. */
@media(min-width:861px){
  .sidebar-collapsed .admin-shell{grid-template-columns:var(--sidebar-w-rail) minmax(0,1fr)}
  .sidebar-collapsed .workspace{grid-column:auto}
  .sidebar-collapsed .sidebar{display:flex;width:var(--sidebar-w-rail);padding:14px 6px;overflow:visible;transition:width .15s ease,padding .15s ease}
  .sidebar-collapsed .sidebar:hover,.sidebar-collapsed .sidebar:focus-within{width:var(--sidebar-w);padding:14px 12px;z-index:60;box-shadow:var(--shadow-3);border-right-color:var(--sidebar-border)}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .brand{justify-content:center;padding:2px 0 10px}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .brand strong{display:none}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .brand-logo,
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .brand-mark{width:44px;height:44px;flex:0 0 44px}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) nav a>span:not(.menu-icon),
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .menu-group>summary>span:not(.menu-icon),
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .sidebar-logout-button>span{display:none}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .menu-group>summary::after{display:none}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .submenu{display:none}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) nav a,
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .menu-group>summary,
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .sidebar-logout-button{justify-content:center;padding:7px 4px;gap:0}
  /* El buscador se reduce a su lupa; al desplegarse vuelve a ser un campo. */
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .sidebar-search input{padding:7px 0;background-position:center;color:transparent}
  .sidebar-collapsed .sidebar:not(:hover):not(:focus-within) .sidebar-search input::placeholder{color:transparent}
}
/* Sin una columna explicita minmax(0,1fr) la pista implicita de estas rejillas
   se dimensiona por el contenido: una tabla ancha empujaba .workspace y main
   mas alla de la ventana y la barra superior se salia de pantalla. */
.workspace{min-height:100vh;grid-template-columns:minmax(0,1fr);min-width:0;overflow-x:clip}
.workspace>*{min-width:0}
main{grid-template-columns:minmax(0,1fr)}
main>*{min-width:0;max-width:100%}
.topbar{position:sticky;top:0;z-index:24;height:var(--topbar-h);padding:0 16px;gap:10px;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--border)}
@supports not (backdrop-filter:blur(2px)){.topbar{background:var(--surface)}}

/* marca */
.brand{gap:10px;padding:4px 4px 10px;border-bottom:1px solid var(--sidebar-border)}
.brand strong{font-size:14.5px;line-height:1.25;color:var(--sidebar-text);letter-spacing:-.01em;white-space:nowrap}
.brand-logo,.brand-mark{width:38px;height:38px;flex-basis:38px;border-radius:9px}
.brand-logo{background:var(--sidebar-bg-2);border-color:var(--sidebar-border);padding:3px}
.brand-mark{background:var(--primary);color:var(--on-primary);font-size:15px}
.sidebar-search{margin-top:0}
.sidebar-search input{min-height:36px;border-radius:8px;font-size:13px;padding:7px 10px 7px 32px;background:var(--sidebar-bg-2);border-color:var(--sidebar-border);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa7bd' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:9px center;background-size:15px}

/* menu: iconos reales en lugar de iniciales */
.sidebar nav a,.menu-group summary{padding:7px 9px;border-radius:8px;font-size:13.5px;gap:9px;color:var(--sidebar-text-2);transition:background .13s,color .13s}
.menu-group summary{color:var(--sidebar-text);font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.sidebar nav a:hover,.sidebar nav a:focus-visible,.menu-group summary:hover,.menu-group summary:focus-visible{background:var(--sidebar-hover);color:var(--sidebar-text)}
.sidebar nav a[aria-current="page"]{background:var(--primary);color:var(--on-primary);font-weight:600;box-shadow:none}
.sidebar nav a[aria-current="page"] .menu-icon{background:transparent;color:var(--on-primary)}
.menu-icon{width:22px;height:22px;flex-basis:22px;border-radius:6px;background:transparent;color:inherit;font-size:0}
.menu-icon svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}
.menu-group summary .menu-icon svg{width:15px;height:15px;stroke-width:2}
.submenu{margin:1px 0 4px 11px;padding-left:9px;border-left:1px solid var(--sidebar-border)}
.submenu a{padding:6px 9px;font-size:13px}
.menu-group summary::after{content:"";width:7px;height:7px;border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(45deg) translate(-2px,-2px);opacity:.55;transition:transform .16s}
.menu-group:not([open]) summary::after{content:"";transform:rotate(-45deg) translate(-1px,1px)}
.sidebar-logout-button{border-radius:8px;padding:8px 10px;font-size:13px;font-weight:600;background:transparent;border-color:var(--sidebar-border);color:var(--sidebar-text-2);display:flex;align-items:center;gap:9px}
.sidebar-logout-button:hover,.sidebar-logout-button:focus-visible{background:var(--sidebar-hover);color:var(--sidebar-text)}
.sidebar-logout-button svg{width:17px;height:17px;flex:0 0 17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

.shell-icon__glyph{width:18px;height:18px;display:block;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.icon-button,.language-button{display:inline-flex;align-items:center;justify-content:center}

/* barra superior */
.icon-button,.notification-button{border-radius:8px;border-color:var(--border);background:var(--surface);color:var(--text-2);transition:background .13s,border-color .13s,color .13s}
.icon-button:hover,.notification-button:hover{background:var(--surface-2);border-color:var(--border-2);color:var(--text)}
.notification-button--bell,.language-button{min-width:36px;width:36px;height:36px}
.notification-button--bell svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.notification-button--bell strong{top:-5px;right:-5px;min-width:17px;height:17px;font-size:10.5px;font-weight:700}
.context span{font-weight:600;font-size:13.5px;line-height:1.2}
.context small,.user-chip small{font-size:11.5px;line-height:1.25}
.user-chip strong{font-size:13.5px;line-height:1.2}
.user-actions-dropdown,.language-switcher,.notification-dropdown,.table-actions-menu__items{border-radius:var(--radius);border-color:var(--border);box-shadow:var(--shadow-3);background:var(--surface)}
.language-switcher a[aria-current=true]{background:var(--primary-soft);color:var(--primary-text);font-weight:700}

main{padding:16px 18px 22px;gap:14px;max-width:1560px;width:100%;margin-inline:auto}
.admin-footer{padding:10px 18px 18px;font-size:12.5px}
.breadcrumbs{font-size:12.5px;gap:6px}
.breadcrumb-separator{opacity:.45}
.breadcrumbs a{color:var(--text-3)}
.breadcrumbs a:hover{color:var(--primary);text-decoration:underline}
.page-heading h1{font-size:clamp(20px,2.2vw,26px)}
.page-heading p{font-size:13.5px;max-width:80ch}

/* --------------------------------------------------------------- botones */
.button,button.button{border-radius:8px;padding:0 14px;min-height:var(--field-h);font-size:13.5px;font-weight:600;letter-spacing:-.005em;cursor:pointer;white-space:nowrap;transition:background .13s,border-color .13s,color .13s,box-shadow .13s;background:var(--primary);color:var(--on-primary)}
.button:hover,button.button:hover{background:var(--primary-hover)}
.button:active,button.button:active{background:var(--primary-active)}
.button.secondary,.button.neutral{background:var(--surface);border-color:var(--border-2);color:var(--text-2)}
.button.secondary:hover,.button.neutral:hover{background:var(--surface-2);border-color:var(--border-3);color:var(--text)}
.button.danger{background:var(--danger);color:#fff}
.button.danger:hover{background:var(--danger-strong)}
.button:disabled,button.button:disabled{opacity:.55;cursor:not-allowed}
.button svg{flex:0 0 16px;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.button-row{gap:8px}
.action-icon-button{width:var(--field-h);min-width:var(--field-h);height:var(--field-h);min-height:var(--field-h);border-radius:8px;border-color:var(--border-2);color:var(--text-2);background:var(--surface)}
.action-icon-button:hover,.action-icon-button:focus-visible{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}
.table-actions .table-action-icon{width:32px;min-width:32px;height:32px;min-height:32px}
.table-actions .table-action-icon__glyph,.table-actions .action-icon-button>svg{width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;flex-basis:16px!important}
.form-action-button{min-height:var(--field-h);border-radius:8px}

/* ---------------------------------------------------------------- paneles */
.panel{border-radius:var(--radius-lg);border-color:var(--border);box-shadow:var(--shadow-1);padding:16px 18px}
.panel-title h2{font-size:16.5px}
.panel-subtitle{font-size:12.5px}
.stat,.stats-grid>article,.health-card,.summary-card{border-radius:var(--radius-lg);border-color:var(--border);box-shadow:var(--shadow-1);min-height:74px;padding:12px 14px}
.stat::before,.stats-grid>article::before,.health-card::before,.summary-card::before{width:3px;background:var(--primary);opacity:.9}
.stat:hover,.stats-grid>article:hover,.health-card:hover,.summary-card:hover{border-color:var(--primary-soft-border);box-shadow:var(--shadow-2)}
.stat>strong,.stats-grid>article>strong,.health-card>strong,.summary-card>strong{font-size:23px}
.stat>span,.stats-grid>article>span,.health-card>span,.summary-card>span{font-size:11px;color:var(--text-3)}
.cache-pill{border-radius:var(--radius-pill);font-size:12.5px;padding:5px 11px}

/* Smart buttons: misma forma en todos los modulos. */
.smart-row{gap:8px}
.smart-button{border-radius:var(--radius);border-color:var(--border);padding:6px 12px 6px 7px;background:var(--surface);box-shadow:var(--shadow-1)}
.smart-button:hover,.smart-button:focus-visible{border-color:var(--primary-soft-border);box-shadow:var(--shadow-2)}
.smart-button__icon{width:30px;height:30px;flex-basis:30px;border-radius:8px;background:var(--primary-soft);color:var(--primary)}
.smart-button__value{font-size:14.5px;color:var(--text)}
.smart-button__label{font-size:11.5px;color:var(--text-3)}
.smart-button[aria-current="true"],.smart-button.is-active{border-color:var(--primary);background:var(--primary-soft)}

/* ---------------------------------------------------------------- tablas */
.table-shell,.table-wrap,.table-responsive,.attendance-history-wrap{border-radius:var(--radius-lg);border-color:var(--border);box-shadow:var(--shadow-1)}
table{font-size:13px}
thead th{background:var(--surface-2);border-bottom:1px solid var(--border)}
thead th>*:not(.table-sort),thead th:not(:has(.table-sort)),.table-sort{font-size:11px;letter-spacing:.045em;color:var(--text-3);padding:9px 13px}
th,td{padding:9px 13px}
tbody tr:hover>td{background:var(--surface-2)}
.table-row-link{padding:9px 13px}
.table-row-link:hover,.table-row-link:focus{background:var(--surface-2);color:var(--primary)}
[aria-sort="asc"] .table-sort,[aria-sort="desc"] .table-sort{color:var(--primary);background:var(--primary-soft)}
/* La cabecera ordenable puede ser enlace (orden en servidor) o boton (orden
   de la pagina visible): las dos deben verse y comportarse igual. */
a.table-sort{text-decoration:none;display:flex}
a.table-sort:hover{background:var(--surface-3);color:var(--text)}
.table-sort:hover{background:var(--surface-3);color:var(--text)}
.table-actions{gap:3px;max-width:none;flex-wrap:nowrap}
.pagination{font-size:12.5px;margin-top:10px}
.status-badge,.chip,.event-badge,.event-status,.event-chip{border-radius:var(--radius-pill);font-size:11.5px;font-weight:600;letter-spacing:.01em}
.status-badge{padding:3px 9px}

/* ------------------------------------------------------------ formularios */
/* Los campos cortos ya no ocupan una fila entera: la rejilla es de 12
   columnas y cada campo declara cuanto mide segun su tipo. */

.module-form,.generic-form{gap:16px}
.form-section{grid-template-columns:repeat(12,minmax(0,1fr));gap:12px 16px;padding:16px 18px;border-radius:var(--radius-lg);border-color:var(--border);background:var(--surface);box-shadow:var(--shadow-1)}
.form-section>legend{grid-column:1/-1;font-size:14px;letter-spacing:-.005em;color:var(--text);padding:0}
.form-section>.section-description{grid-column:1/-1;font-size:12.5px;margin:-4px 0 2px}
/* Las anchuras solo tienen sentido dentro de la rejilla de 12 columnas de una
   seccion. Fuera de ella (barras de filtro, que son de columnas fluidas) un
   "span 6" desbordaba la pista y tiraba cada campo a su propia fila. */
.form-field,.upload-field,.rich-editor,.choice-field{min-width:0}
.form-section>.form-field,.form-section>.upload-field,.form-section>.rich-editor,.form-section>.choice-field{grid-column:span 12}
.form-section>.form-field--half,.form-section>.upload-field--half{grid-column:span 6}
.form-section>.form-field--third{grid-column:span 4}
.form-section>.form-field--quarter{grid-column:span 3}
.form-section>.form-field--full,.form-section--grid>.form-field--full{grid-column:1/-1}
.filter-row>.form-field,.table-filters>.form-field,.filters-grid>.form-field{grid-column:auto}
.filter-row>.form-field--full,.table-filters>.form-field--full,.filters-grid>.form-field--full{grid-column:1/-1}
.form-field>span:first-child,.upload-field>span:first-child,.rich-editor>span:first-child{font-size:12.5px;font-weight:600;color:var(--text-2)}
.form-field input:not([type=checkbox]):not([type=radio]),.form-field select,.form-field textarea,.filter-row input,.filter-row select,.table-filters input,.table-filters select,.filters-grid input,.filters-grid select,.rich-editor textarea,.rich-editor-surface,.settings-upload-field input[type=file]{min-height:var(--field-h);padding:8px 11px;border-radius:8px;border-color:var(--border-2);background:var(--surface);color:var(--text);font-size:13.5px;transition:border-color .13s,box-shadow .13s}
.form-field textarea,.rich-editor textarea{min-height:96px;line-height:1.55}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.filter-row input:focus,.filter-row select:focus,.table-filters input:focus,.table-filters select:focus,.filters-grid input:focus,.filters-grid select:focus,.rich-editor textarea:focus,.rich-editor-surface:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}
.form-field input::placeholder,.form-field textarea::placeholder{color:var(--text-4)}
.form-field select{appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7789' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px}
.form-field select[multiple]{appearance:auto;background-image:none;padding-right:11px}
.field-help{font-size:12px;color:var(--text-3);line-height:1.45}
.field-error{font-size:12px;font-weight:600}
.required-asterisk{color:var(--danger)}
.field-prefix{border-radius:8px 0 0 8px;background:var(--surface-2);color:var(--text-3);min-height:var(--field-h);display:flex;align-items:center;padding:0 11px;font-size:13px}
.form-field--money input{border-radius:0 8px 8px 0}
.choice-field{border-radius:var(--radius);border-color:var(--border);background:var(--surface-2);padding:11px 13px}
.choice-field legend{font-size:12.5px;color:var(--text-2)}
.check,.choice-field label{font-size:13px;color:var(--text-2)}
.form-action-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding-top:2px}

/* Areas de texto y textos largos: ancho de lectura comodo y sin desbordes. */
.admin-long-text,.detail-grid dd,.reading-content-scroll{max-width:86ch;overflow-wrap:anywhere;line-height:1.6}
/* La medida de 86ch es la del TEXTO; la caja seguia estirandose a todo el
   panel y dejaba medio ancho vacio a su derecha (visible en Blog, Devocionales
   y Libros). Ademas el alto fijo de 360px convertia un articulo largo en un
   ojo de buey: en una pantalla de 900px sobraban 400px sin usar. La caja se
   ajusta ahora a la medida del texto y la ventana de lectura crece con la
   pantalla, sin dejar de tener tope para que la ficha no se vuelva infinita. */
.reading-content-card--wide{max-width:min(100%,calc(86ch + 34px))}
.reading-content-scroll{max-height:min(62vh,760px)}
/* La rejilla de lectura heredaba el minimo generico de 200px, pensado para
   listas de pares dato-valor. Con el ancho actual salian SEIS columnas y la
   prosa de un devocional ("Lectura biblica", "Estudios", "Confesion") se leia
   en tiras de 205px. Con 340px salen tres columnas holgadas y las tarjetas
   cortas siguen compartiendo fila en vez de apilarse una bajo otra. */
.reading-detail-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.rich-editor-toolbar{border-radius:8px 8px 0 0;border-color:var(--border);background:var(--surface-2);margin-bottom:-1px}
.rich-editor-surface{border-radius:0 0 8px 8px}
.rich-editor-button,.rich-editor-select{border-radius:6px;border-color:var(--border-2);color:var(--text-2)}

/* filtros */
.filter-row,.table-filters,.filters-grid{gap:10px;margin:0 0 12px}
.filter-row__actions{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.filter-row__actions .button{min-height:var(--field-h)}
.table-filters label,.filters-grid label,.filter-row label{font-size:12.5px;gap:5px}
.table-filters label>span,.filters-grid label>span,.filter-row label>span{font-weight:600;color:var(--text-2)}

/* -------------------------------------------------------------- detalles */
.detail-view{gap:14px}
.detail-grid{gap:10px;margin-top:10px}
.detail-grid div{border-radius:var(--radius);border-color:var(--border);background:var(--surface-2);padding:10px 12px}
.detail-grid dt{font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}
.detail-grid dd{margin-top:3px;font-size:13.5px;font-weight:600;color:var(--text)}
.attachment-card,.social-profile-activity,.reading-content-card,.services-flow__step,.event-reg__metric{border-radius:var(--radius);border-color:var(--border)}
/* El resumen de un panel plegable ES el boton que abre el formulario, pero se
   leia como una cabecera cualquiera: el unico indicio era un "+" palido en el
   extremo opuesto al titulo. Ahora la fila entera responde al raton y el
   marcador tiene aspecto de boton. Vale para los cuatro paneles de este tipo
   (agregar recurso, rol, miembro y asignacion), no solo para el de canciones. */
.collapsible-panel__summary{border-radius:var(--radius);transition:background .13s}
.collapsible-panel__summary:hover,.collapsible-panel__summary:focus-visible{background:var(--primary-soft)}
.collapsible-panel__summary strong{font-size:15px;color:var(--text)}
.collapsible-panel__summary::after{border-color:var(--primary-soft-border);background:var(--primary-soft);color:var(--primary-text);font-size:18px;line-height:1;flex:0 0 auto}
.collapsible-panel__summary:hover::after{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.collapsible-panel[open]>.collapsible-panel__summary{border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0}
.collapsible-panel--sticky>.collapsible-panel__summary{top:var(--topbar-h)}

/* Fichas con pestanas: la seccion ya no lleva su propio panel, lo pone la caja. */
.detail-tabs-panel{padding:12px 16px 16px}
.detail-section--bare{display:grid;gap:0}
.detail-section--bare .detail-grid{margin-top:0}
.detail-view--tabbed .detail-actions{margin-bottom:2px}

/* Pestanas genericas para pantallas de detalle con varias secciones. */
.ui-tabs{display:grid;gap:0}
.ui-tabs__radio{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.ui-tabs__bar{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding:0 2px;overflow-x:auto;scrollbar-width:none}
.ui-tabs__bar::-webkit-scrollbar{display:none}
.ui-tabs__tab{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;cursor:pointer;color:var(--text-3);font-weight:600;font-size:13.5px;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color .13s,border-color .13s}
.ui-tabs__tab svg{width:15px;height:15px;flex:0 0 15px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ui-tabs__tab:hover{color:var(--text)}
.ui-tabs__count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background:var(--surface-3);color:var(--text-3);font-size:11.5px;font-variant-numeric:tabular-nums}
.ui-tabs__panel{display:none;padding-top:14px;gap:14px;min-width:0}
.ui-tabs__panel>*{min-width:0}
.ui-tabs__panel .table-shell{min-width:0;max-width:100%}
.ui-tabs__radio:focus-visible~.ui-tabs__bar .ui-tabs__tab{outline:2px solid var(--primary);outline-offset:-2px}

/* pestanas de servicios (ya existentes) alineadas al nuevo estilo */
.plan-tabs__bar{border-bottom:1px solid var(--border)}
.plan-tabs__tab{border-radius:0;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:9px 13px;font-size:13.5px;color:var(--text-3)}
.plan-tabs__tab:hover{background:transparent;color:var(--text)}

/* ------------------------------------------------------------- mensajeria */
.flash{border-radius:var(--radius);padding:11px 14px;font-size:13.5px;border:1px solid transparent;display:flex;gap:9px;align-items:flex-start;line-height:1.5}
.flash--success{background:var(--success-soft);border-color:var(--success-border);color:var(--success-text)}
.flash--info{background:var(--info-soft);border-color:var(--info-border);color:var(--info-text)}
.flash--warning{background:var(--warning-soft);border-color:var(--warning-border);color:var(--warning-text)}
.flash--error{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger-strong)}
.state{border-radius:var(--radius);font-size:13.5px}
.module-notice{border-radius:var(--radius);font-size:13px}

/* Restos de la hoja antigua que llevaban colores crudos en rgba() y no se
   podian tokenizar por propiedad: se reescriben aqui para que el modo oscuro
   y el acento del tenant tambien les afecten. */
.rich-editor-surface:focus{box-shadow:var(--focus-ring)}
.menu-open .sidebar,.menu-open.sidebar-collapsed .sidebar{box-shadow:var(--shadow-3)}
.menu-open::after{background:var(--overlay)}
.permissions-table thead th:first-child,.permissions-table tbody th:first-child{box-shadow:2px 0 4px -2px rgba(0,0,0,.18)}
.settings-savebar{box-shadow:var(--shadow-2);border-radius:var(--radius);border-color:var(--border)}

/* Desfases anclados a la altura antigua de la barra superior (66/82 px). */
.settings-tabs{top:calc(var(--topbar-h) + 12px);border-radius:var(--radius);border-color:var(--border)}
.settings-panel{scroll-margin-top:calc(var(--topbar-h) + 16px)}
.settings-tabs a{border-radius:8px;font-size:13.5px;padding:8px 10px;color:var(--text-2)}
.settings-tabs a:hover,.settings-tabs a:focus,.settings-tabs a.is-active{background:var(--primary-soft);color:var(--primary-text)}
.settings-check,.settings-health,.settings-instructions{border-radius:var(--radius);border-color:var(--border)}

/* ------------------------------------------- seleccion multiple (2 listas) */
/* El select original se mantiene en el DOM (es lo que se envia) pero deja de
   verse en cuanto el armazon construye las listas. */
[data-dual-list][data-dual-list-ready="true"]>.dual-list__source{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);border:0}
.dual-list{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:stretch}
.dual-list__pane{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:7px;min-width:0;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}
.dual-list__head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.dual-list__head strong{font-size:12.5px;color:var(--text-2)}
.dual-list__count{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 7px;border-radius:var(--radius-pill);background:var(--surface-4);color:var(--text-3);font-size:11.5px;font-variant-numeric:tabular-nums}
.dual-list__search{min-height:32px!important;padding:5px 9px!important;font-size:12.5px!important;border-radius:7px!important}
/* Los selectores de icono y color de equipo cuelgan directos de .form-section,
   que es una rejilla de 12 columnas: sin clase de anchura caian en una sola
   pista y quedaban en ~150 px, con los 52 iconos en UNA columna. Ocupan la
   fila entera, que es lo que necesita su rejilla interna de auto-fill. */
.form-section > .services-team-picker{grid-column:1/-1}

/* Columna flexible, NO rejilla: con display:grid y una altura maxima, las filas
   automaticas se reparten el alto disponible, y como cada elemento lleva
   overflow:hidden su altura minima es cero. Con 60 miembros cada fila quedaba
   en 12 px y el texto se recortaba a la altura de los puntos: la lista se veia
   llena de marcas sueltas en lugar de nombres. */
.dual-list__items{list-style:none;margin:0;padding:4px;display:flex;flex-direction:column;gap:3px;min-height:150px;max-height:260px;overflow-y:auto;border:1px dashed transparent;border-radius:8px;background:var(--surface)}
.dual-list__items.is-drop-target{border-color:var(--primary);background:var(--primary-soft)}
/* flex:0 0 auto para que ningun elemento se encoja por debajo de su texto
   cuando la lista es mas larga que su altura maxima; entonces desplaza. */
.dual-list__item{flex:0 0 auto;padding:6px 9px;border-radius:7px;font-size:13px;line-height:1.5;color:var(--text-2);cursor:grab;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background .12s,color .12s}
.dual-list__item:hover{background:var(--primary-soft);color:var(--primary-text)}
.dual-list__item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.dual-list__item.is-dragging{opacity:.45;cursor:grabbing}
.dual-list__item.is-disabled{opacity:.5;cursor:not-allowed}
.dual-list__empty{padding:10px;text-align:center;font-size:12.5px;color:var(--text-4)}
.dual-list__middle{display:grid;align-content:center;gap:6px}
.dual-list__bulk{min-height:32px;padding:0 10px;font-size:12px;white-space:nowrap}
@media(max-width:780px){
  .dual-list{grid-template-columns:minmax(0,1fr)}
  .dual-list__middle{grid-auto-flow:column;justify-content:center}
}

/* --------------------------------------------------- ventana flotante */
.ui-dialog-overlay{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:20px;background:var(--overlay);backdrop-filter:blur(2px)}
.ui-dialog{width:min(420px,100%);display:grid;gap:10px;padding:20px;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-3)}
.ui-dialog__title{font-size:16px;line-height:1.3;color:var(--text)}
.ui-dialog__text{margin:0;font-size:13.5px;color:var(--text-2)}
.ui-dialog__actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.ui-dialog__actions .button{flex:1 1 auto;justify-content:center}
[aria-invalid="true"]{border-color:var(--danger)!important}

/* ------------------------------------------------- apariencia (ajustes) */
.theme-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px;margin:8px 0 4px}
.theme-card{position:relative;display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid var(--border-2);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color .13s,box-shadow .13s}
.theme-card:hover{border-color:var(--border-3)}
.theme-card.is-selected{border-color:var(--primary);box-shadow:var(--focus-ring)}
.theme-card input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.theme-card__swatch{width:26px;height:26px;flex:0 0 26px;border-radius:8px;background:var(--swatch,var(--primary));box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.theme-card__label{font-size:13px;font-weight:600;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.theme-card.is-selected .theme-card__label{color:var(--text)}
/* El boton del selector de archivos lo dibuja el navegador con sus propios
   colores: en modo oscuro quedaba como un recuadro claro pegado. */
input[type=file]{color:var(--text-2);font-size:13px}
input[type=file]::file-selector-button{margin-right:10px;padding:6px 12px;border:1px solid var(--border-2);border-radius:7px;background:var(--surface-2);color:var(--text-2);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:background .13s,border-color .13s}
input[type=file]::file-selector-button:hover{background:var(--surface-3);border-color:var(--border-3);color:var(--text)}

/* El control nativo de color no dibuja su muestra en todos los navegadores,
   asi que el color elegido se ve en una muestra propia y en texto. */
.accent-field{display:flex;align-items:center;gap:10px;min-height:var(--field-h);padding:4px 10px 4px 4px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface)}
.accent-field:focus-within{border-color:var(--primary);box-shadow:var(--focus-ring)}
.accent-field__swatch{width:30px;height:30px;flex:0 0 30px;border-radius:6px;background:var(--swatch,var(--primary));box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.accent-field__value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--text-2);letter-spacing:.02em}
.accent-field input[type=color]{flex:1 1 auto;min-width:60px;height:30px;padding:0;border:0;background:transparent;cursor:pointer}
.accent-field input[type=color]::-webkit-color-swatch-wrapper{padding:0}
.accent-field input[type=color]::-webkit-color-swatch{border:1px solid var(--border-2);border-radius:6px}
.theme-preview__frame{display:flex;gap:0;height:132px;margin:8px 0 4px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg)}
.theme-preview__side{width:62px;flex:0 0 62px;background:var(--sidebar-bg)}
.theme-preview__body{flex:1;display:grid;align-content:start;gap:9px;padding:10px}
.theme-preview__bar{height:12px;border-radius:var(--radius-pill);background:var(--preview-accent,var(--primary))}
.theme-preview__card{display:grid;gap:6px;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.theme-preview__card span{display:block;height:7px;border-radius:var(--radius-pill);background:var(--surface-3)}
.theme-preview__card span:first-child{width:58%;background:var(--preview-accent,var(--primary));opacity:.55}
.theme-preview__actions{display:flex;gap:7px}
.theme-preview__button{width:56px;height:18px;border-radius:var(--radius-sm);background:var(--preview-accent,var(--primary))}
.theme-preview__button--ghost{background:var(--surface);border:1px solid var(--border-2)}

/* Contenido de un bloque de ficha (galeria, comentarios, cuerpo de texto).
   No lleva panel propio: el marco y el titulo los pone ya la ficha. */
.detail-panel-body{display:grid;gap:12px;align-content:start;min-width:0}

/* Identificadores tecnicos del diagnostico (nombres de evento del canal en
   tiempo real): se leen como codigo, no como una etiqueta sin traducir. */
.status-badge--code{font-family:var(--font-mono);font-weight:600;letter-spacing:.01em}

/* Pestanas sin JavaScript: el radio marcado enciende el panel y la etiqueta
   de su misma posicion. Antes cada pagina con detalle generaba estas reglas
   con los identificadores de sus propias pestanas y las reenviaba en linea. */
.ui-tabs__radio:nth-of-type(1):checked ~ .ui-tabs__panel[data-ui-tab-index="1"]{display:grid}
.ui-tabs__radio:nth-of-type(1):checked ~ .ui-tabs__bar label[data-ui-tab-index="1"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(2):checked ~ .ui-tabs__panel[data-ui-tab-index="2"]{display:grid}
.ui-tabs__radio:nth-of-type(2):checked ~ .ui-tabs__bar label[data-ui-tab-index="2"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(3):checked ~ .ui-tabs__panel[data-ui-tab-index="3"]{display:grid}
.ui-tabs__radio:nth-of-type(3):checked ~ .ui-tabs__bar label[data-ui-tab-index="3"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(4):checked ~ .ui-tabs__panel[data-ui-tab-index="4"]{display:grid}
.ui-tabs__radio:nth-of-type(4):checked ~ .ui-tabs__bar label[data-ui-tab-index="4"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(5):checked ~ .ui-tabs__panel[data-ui-tab-index="5"]{display:grid}
.ui-tabs__radio:nth-of-type(5):checked ~ .ui-tabs__bar label[data-ui-tab-index="5"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(6):checked ~ .ui-tabs__panel[data-ui-tab-index="6"]{display:grid}
.ui-tabs__radio:nth-of-type(6):checked ~ .ui-tabs__bar label[data-ui-tab-index="6"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(7):checked ~ .ui-tabs__panel[data-ui-tab-index="7"]{display:grid}
.ui-tabs__radio:nth-of-type(7):checked ~ .ui-tabs__bar label[data-ui-tab-index="7"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(8):checked ~ .ui-tabs__panel[data-ui-tab-index="8"]{display:grid}
.ui-tabs__radio:nth-of-type(8):checked ~ .ui-tabs__bar label[data-ui-tab-index="8"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(9):checked ~ .ui-tabs__panel[data-ui-tab-index="9"]{display:grid}
.ui-tabs__radio:nth-of-type(9):checked ~ .ui-tabs__bar label[data-ui-tab-index="9"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(10):checked ~ .ui-tabs__panel[data-ui-tab-index="10"]{display:grid}
.ui-tabs__radio:nth-of-type(10):checked ~ .ui-tabs__bar label[data-ui-tab-index="10"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(11):checked ~ .ui-tabs__panel[data-ui-tab-index="11"]{display:grid}
.ui-tabs__radio:nth-of-type(11):checked ~ .ui-tabs__bar label[data-ui-tab-index="11"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(12):checked ~ .ui-tabs__panel[data-ui-tab-index="12"]{display:grid}
.ui-tabs__radio:nth-of-type(12):checked ~ .ui-tabs__bar label[data-ui-tab-index="12"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(13):checked ~ .ui-tabs__panel[data-ui-tab-index="13"]{display:grid}
.ui-tabs__radio:nth-of-type(13):checked ~ .ui-tabs__bar label[data-ui-tab-index="13"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(14):checked ~ .ui-tabs__panel[data-ui-tab-index="14"]{display:grid}
.ui-tabs__radio:nth-of-type(14):checked ~ .ui-tabs__bar label[data-ui-tab-index="14"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(15):checked ~ .ui-tabs__panel[data-ui-tab-index="15"]{display:grid}
.ui-tabs__radio:nth-of-type(15):checked ~ .ui-tabs__bar label[data-ui-tab-index="15"]{color:var(--primary);border-bottom-color:var(--primary)}
.ui-tabs__radio:nth-of-type(16):checked ~ .ui-tabs__panel[data-ui-tab-index="16"]{display:grid}
.ui-tabs__radio:nth-of-type(16):checked ~ .ui-tabs__bar label[data-ui-tab-index="16"]{color:var(--primary);border-bottom-color:var(--primary)}

/* ------------------------------------------------------------- responsive */
@media(max-width:1100px){.admin-shell{grid-template-columns:216px minmax(0,1fr)}}
@media(max-width:860px){
  .sidebar,.sidebar-collapsed .sidebar{position:fixed}
  .menu-open .sidebar,.menu-open.sidebar-collapsed .sidebar{height:100vh;max-height:100vh}
  .topbar{position:sticky;top:0}
  main{padding:12px 12px 18px}
  .form-section{grid-template-columns:minmax(0,1fr);padding:14px}
  .form-field,.form-field--half,.form-field--third,.form-field--quarter,.upload-field--half{grid-column:1/-1}
}


/* services · calendario y asignaciones (antes en modules/services/views/operations.view.ts) */
/* El calendario reservaba 180px de alto por dia incluso vacio, asi que un mes
       normal ocupaba varias pantallas de hueco. Ahora la altura la marca el
       contenido, con un minimo corto, y el dia de hoy y los que tienen servicio
       se distinguen de un vistazo. */
    #services-assignment-calendar-form{max-width:none}
    #services-assignment-calendar-form .form-section{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));align-items:end;gap:10px;max-width:100%}
    #services-assignment-calendar-form .form-section legend,
    #services-assignment-calendar-form .section-description{grid-column:1/-1}
    #services-assignment-calendar-form .button-row{justify-content:flex-start}
    .services-calendar-panel{overflow-x:hidden}
    .services-assignment-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;width:100%;max-width:100%;min-width:0}
    .services-calendar-weekday{font-size:11px;color:var(--text-3);font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:4px 6px;text-align:center}
    .services-calendar-day{min-width:0;min-height:92px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:7px;display:grid;align-content:start;gap:5px}
    .services-calendar-day:has(.services-calendar-event){background:var(--surface);border-color:var(--border)}
    .calendar-day--empty.services-calendar-day{background:var(--surface-2);border-style:dashed;min-height:56px}
    .services-calendar-date{display:inline-flex;width:25px;height:25px;align-items:center;justify-content:center;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-size:12.5px;font-weight:700;color:var(--text-2);font-variant-numeric:tabular-nums}
    .services-calendar-day:has(.services-calendar-event) .services-calendar-date{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
    .services-calendar-event{display:grid;gap:6px;border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:8px;padding:7px;background:var(--surface);color:inherit;text-decoration:none}
    .services-calendar-event-head{display:grid;gap:3px;min-width:0}
    .services-calendar-event-head div{display:grid;gap:2px;min-width:0}
    .services-calendar-event-head b{font-size:12.5px;line-height:1.25;overflow-wrap:anywhere}
    .services-calendar-event-section{display:grid;gap:4px}
    .services-calendar-assignment,.services-calendar-availability{display:grid;gap:3px;min-width:0;border:0;background:var(--surface-2);border-radius:6px;padding:5px 6px;color:inherit;text-decoration:none;font-size:11.5px}
    .services-calendar-assignment span,.services-calendar-availability span{font-weight:600}
    .services-calendar-assignment small,.services-calendar-availability small,.muted{color:var(--text-4);min-width:0;font-size:11px}
    .services-calendar-expand{display:block;min-width:0}
    .services-calendar-expand summary{display:block;cursor:pointer;list-style:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px}
    .services-calendar-expand summary::-webkit-details-marker{display:none}
    .services-calendar-expand summary::after{content:'+';display:inline-flex;margin-left:4px;width:13px;height:13px;align-items:center;justify-content:center;border-radius:999px;background:var(--surface-3);color:var(--text-3);font-size:10px;font-weight:800;vertical-align:middle}
    .services-calendar-expand[open] summary{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word}
    .services-calendar-expand[open] summary::after{content:'-'}
    .services-calendar-expand-body{display:block;margin-top:4px;white-space:normal;word-break:break-word;overflow-wrap:anywhere}
    .services-calendar-availability-summary{display:grid;gap:3px}
    .services-calendar-availability-summary .status-badge{max-width:100%;justify-content:center}
    .services-calendar-member{display:flex;align-items:center;gap:5px;min-width:0}
    .services-calendar-member-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .services-calendar-status-icons{display:inline-flex;align-items:center;gap:3px;flex:0 0 auto}
    .services-calendar-status-icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;border-radius:999px;font-size:10.5px;font-weight:800;line-height:1}
    .services-calendar-status-icon--accepted{background:var(--success-soft);color:var(--success-text)}
    .services-calendar-status-icon--declined{background:var(--danger-soft);color:var(--danger-strong)}
    .services-calendar-status-icon--pending{background:var(--warning-soft);color:var(--warning-text)}
    .services-calendar-status-icon--maybe{background:var(--info-soft);color:var(--info-text)}
    .services-calendar-status-icon--blocked{background:var(--warning-soft);color:var(--warning-text)}
    .services-calendar-day-blocks{display:grid;gap:5px;margin-top:4px}
    .services-calendar-empty{grid-column:1/-1;border:1px dashed var(--border-2);border-radius:10px;padding:16px;text-align:center;color:var(--text-3)}
    /* Franja 861-1100px: con la barra lateral el contenido baja de 840 px y
       las cuatro pistas de 170 px mas sus huecos ya no caben. El selector lleva
       el ID a proposito: si no, no gana a la regla de arriba. */
    @media(max-width:1100px){
      #services-assignment-calendar-form .form-section{grid-template-columns:repeat(2,minmax(0,1fr))}
    }
    @media(max-width:860px){
      #services-assignment-calendar-form .form-section{grid-template-columns:1fr}
      .services-assignment-calendar-grid{grid-template-columns:1fr;min-width:0}
      .services-calendar-weekday{display:none}
      /* En movil los dias vacios no aportan nada y alargan el scroll. */
      .calendar-day--empty.services-calendar-day{display:none}
      .services-calendar-day{min-height:auto}
    }
  

    .services-assignment-bulk-form{display:grid;gap:1rem}
    .services-assignment-picker{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:1rem;align-items:end;border:1px solid var(--border);border-radius:12px;padding:1.25rem;background:var(--surface);box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .services-assignment-picker legend{grid-column:1/-1;margin:0 0 -.15rem;padding:0;font-size:1.05rem;font-weight:800;color:var(--text)}
    .services-assignment-picker .form-field{display:grid;gap:.4rem;font-size:14px}
    .services-assignment-picker .field-label{font-weight:700;color:var(--text)}
    .services-assignment-picker select{width:100%;min-height:46px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface);color:var(--text);font:inherit;padding:.65rem .8rem}
    .services-assignment-picker select:focus{outline:2px solid rgba(33,90,109,.14);border-color:var(--primary)}
    .services-assignment-bulk-grid{display:grid;gap:.75rem}
    .services-assignment-bulk-row{display:grid;grid-template-columns:40px repeat(5,minmax(140px,1fr)) auto;gap:.75rem;align-items:end;border:1px solid var(--border);border-radius:10px;padding:1rem;background:var(--surface);box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .services-assignment-bulk-row strong{align-self:center;color:var(--text-3)}
    .services-assignment-bulk-row label{display:grid;gap:.35rem}
    .services-assignment-bulk-row span{font-weight:700;color:var(--text)}
    .services-assignment-bulk-row [hidden]{display:none!important}
    .services-assignment-bulk-row select,.services-assignment-bulk-row input{width:100%;min-height:42px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;padding:.5rem .7rem}
    .services-assignment-bulk-row select:focus,.services-assignment-bulk-row input:focus{outline:2px solid rgba(37,99,235,.16);border-color:var(--primary)}
    .services-assignment-actions{justify-content:flex-start;gap:.5rem}
    .services-assignment-remove{white-space:nowrap}
    select[data-locked-select]{pointer-events:none;background:var(--surface-2)}
    @media(max-width:980px){.services-assignment-picker{grid-template-columns:1fr}.services-assignment-bulk-row{grid-template-columns:1fr}.services-assignment-bulk-row strong{display:none}.services-assignment-remove{justify-self:flex-start}}

/* services · detalle de plan (antes en modules/services/views/plan-detail.view.ts) */
/* Paleta alineada con el resto del panel: el orden del servicio usaba
           una gama azul propia, ajena al panel, y se veia como una pieza
           pegada. Ahora toma los mismos tokens que todo lo demas. */
        .services-plan-order__header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;flex-wrap:wrap}
        .services-plan-order__header h2{margin:0;font-size:19px}
        .services-plan-order__totals{display:flex;gap:8px;flex-wrap:wrap}
        .services-plan-order__total{font-weight:600;font-size:12.5px;color:var(--text-2);background:var(--surface-3);border-radius:999px;padding:6px 12px;white-space:nowrap}
        .services-plan-order__empty{color:var(--text-3);margin:0}
        .services-plan-order__list{display:grid;gap:8px}
        .services-plan-order__item{display:grid;grid-template-columns:auto auto 1fr auto;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);transition:border-color .14s,box-shadow .14s}
        .services-plan-order__item:hover{border-color:var(--border-3);box-shadow:0 4px 14px rgba(20,35,55,.07)}
        .services-plan-order__item[draggable=true]{cursor:grab}
        .services-plan-order__item[aria-grabbed=true]{opacity:.6;cursor:grabbing;border-color:var(--primary);border-style:dashed}
        .services-plan-order__item--drop-before{box-shadow:0 -3px 0 var(--primary)}
        .services-plan-order__item--drop-after{box-shadow:0 3px 0 var(--primary)}
        .services-plan-order__drag{width:30px;height:30px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-3);display:inline-flex;align-items:center;justify-content:center;cursor:grab}
        .services-plan-order__drag:hover{background:var(--surface-2);color:var(--text)}
        .services-plan-order__drag svg{width:15px;height:15px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
        .services-plan-order__drag:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
        /* Un encabezado abre bloque: fondo propio y barra lateral para que se lea
           como separador y no como un elemento mas de la lista. */
        .services-plan-order__item--header{border-color:var(--border-2);background:var(--surface-2);box-shadow:inset 3px 0 0 var(--primary)}
        .services-plan-order__item--nested{margin-left:22px;position:relative}
        .services-plan-order__item--nested::before{content:"";position:absolute;left:-12px;top:-4px;bottom:-4px;width:2px;background:var(--border);border-radius:2px}
        .services-plan-order__item--nested:last-child::before{bottom:50%}
        .services-plan-order__item--note{border-color:var(--warning-border);background:var(--warning-soft);box-shadow:inset 3px 0 0 var(--warning)}
        .services-plan-order__index{min-width:28px;height:28px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-weight:700;font-size:13px;display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}
        .services-plan-order__item--header .services-plan-order__index{background:var(--primary);color:var(--on-primary)}
        .services-plan-order__item--note .services-plan-order__index{background:var(--warning);color:var(--on-primary)}
        .services-plan-order__title{font-weight:700;color:var(--text);font-size:14.5px;margin-bottom:3px}
        .services-plan-order__meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;color:var(--text-3);font-size:12.5px}
        .services-plan-order__meta-label{display:inline-flex;gap:4px}
        .services-plan-order__meta-label strong{color:var(--text-2);font-weight:600}
        .services-plan-order__notes{margin-top:5px;color:var(--text-3);font-size:12.5px;line-height:1.4}
        .services-plan-order__notes strong{color:var(--text-2)}
        .services-plan-order__badge{border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:700;background:var(--surface-3);color:var(--text-2)}
        .services-plan-order__badge--song{background:var(--primary-soft);color:var(--primary-hover)}
        .services-plan-order__badge--media{background:var(--warning-soft);color:var(--warning)}
        .services-plan-order__badge--header{background:var(--primary);color:var(--on-primary)}
        .services-plan-order__badge--note{background:var(--warning-soft);color:var(--warning)}
        .services-plan-order__badge--duration{background:var(--success-soft);color:var(--success-text);font-variant-numeric:tabular-nums}
        .services-plan-order__badge--group{background:var(--primary-soft);color:var(--primary-hover)}
        .services-plan-order__actions{display:flex;gap:5px;align-items:center;justify-content:flex-end}
        .services-plan-order__actions .inline-action{margin:0}
        .services-plan-order__icon{width:32px;min-width:32px;height:32px;min-height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:8px}
        .services-plan-order__icon svg,.services-plan-order__icon .table-action-icon__glyph{width:15px!important;height:15px!important;min-width:15px!important;min-height:15px!important;display:block!important;flex:0 0 15px!important;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
        @media(max-width:860px){.services-plan-order__item{grid-template-columns:auto auto 1fr;row-gap:8px}.services-plan-order__actions{grid-column:1/-1;justify-content:flex-start}.services-plan-order__item--nested{margin-left:12px}}
      

    .services-plan-assignment-form{display:grid;gap:1rem}
    .services-plan-assignment-grid{display:grid;gap:.75rem}
    .services-plan-assignment-row{display:grid;grid-template-columns:40px repeat(6,minmax(140px,1fr)) auto;gap:.75rem;align-items:end;border:1px solid var(--border);border-radius:10px;padding:1rem;background:var(--surface);box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .services-plan-assignment-row strong{align-self:center;color:var(--text-3)}
    .services-plan-assignment-row label{display:grid;gap:.35rem}
    .services-plan-assignment-row span{font-weight:700;color:var(--text)}
    .services-plan-assignment-row [hidden]{display:none!important}
    .services-plan-assignment-row select,.services-plan-assignment-row input{width:100%;min-height:42px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;padding:.5rem .7rem}
    .services-plan-assignment-row select:focus,.services-plan-assignment-row input:focus{outline:2px solid rgba(37,99,235,.16);border-color:var(--primary)}
    .services-plan-assignment-actions{justify-content:flex-start;gap:.5rem}
    .services-plan-assignment-remove{white-space:nowrap}
    @media(max-width:1080px){.services-plan-assignment-row{grid-template-columns:1fr}.services-plan-assignment-row strong{display:none}.services-plan-assignment-remove{justify-self:flex-start}}

/* services · selector de icono y color de equipo (antes en modules/services/views/teams-form.view.ts) */
.services-team-picker{display:grid;gap:10px;border:1px solid var(--border);border-radius:8px;padding:12px;background:var(--surface)}
    .services-team-picker summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;font-weight:700}
    .services-team-picker summary::-webkit-details-marker{display:none}
    .services-team-picker summary::after{content:'+';display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-weight:900}
    .services-team-picker[open] summary::after{content:'-'}
    .services-team-picker__body{display:grid;gap:10px}
    .services-icon-picker__head,.services-color-picker__head{display:grid;gap:6px}
    .services-icon-picker__search{width:100%;border:1px solid var(--border-2);border-radius:6px;padding:10px;background:var(--surface)}
    .services-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;max-height:260px;overflow:auto;padding:2px}
    .services-icon-picker__option{display:grid;gap:6px;align-items:center;justify-items:center;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);padding:10px 8px;min-height:76px;font:inherit;cursor:pointer}
    .services-icon-picker__option:hover,.services-icon-picker__option:focus,.services-color-picker__option:hover,.services-color-picker__option:focus{border-color:var(--primary);background:var(--primary-soft);outline:none}
    .services-icon-picker__option[aria-pressed="true"],.services-color-picker__option[aria-pressed="true"]{border-color:var(--primary);background:var(--info-soft);box-shadow:0 0 0 2px rgba(33,90,109,.12)}
    .services-icon-picker__glyph{font-size:24px;line-height:1}
    .services-icon-picker__name{font-size:12px;color:var(--text-2);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .services-icon-picker__current,.services-color-picker__current{color:var(--text-3);font-size:13px}
    .services-color-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
    .services-color-picker__option{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);padding:9px;font:inherit;cursor:pointer;min-width:0}
    .services-color-picker__swatch{display:inline-block;width:24px;height:24px;border-radius:999px;border:1px solid rgba(17,24,39,.18);flex:0 0 24px}
    .services-color-picker__name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* services · detalle de cancion (antes en modules/services/views/song-detail.view.ts) */
.service-collapsible__header {
      align-items: center;
      display: flex;
      gap: 1rem;
      justify-content: space-between;
    }
    .service-collapsible__toggle {
      flex: 0 0 auto;
    }
    .service-song-content-grid {
      display: grid;
      gap: 1rem;
      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
      min-width: 0;
    }
    .service-song-content-card {
      border:1px solid var(--border-color, var(--border));
      border-radius: 8px;
      min-width: 0;
      padding: 1rem;
    }
    .service-song-content-card h3 {
      margin-top: 0;
    }
    .service-song-richtext {
      max-height: 34rem;
      min-height: 8rem;
      overflow: auto;
      overflow-wrap: anywhere;
      white-space: pre-wrap;
      word-break: break-word;
      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
      font-size: 13px;
      line-height: 1.5;
    }
    /* Editor de letra/acordes: espacios consecutivos visibles y fuente
       monoespaciada, para que las cifras queden encima de la silaba. */
    .rich-editor--preformatted .rich-editor-surface {
      white-space: pre-wrap;
      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
      font-size: 13px;
      line-height: 1.5;
      tab-size: 4;
    }
    .rich-editor--preformatted .rich-editor-surface p {
      margin: 0;
    }
    .service-song-richtext p {
      margin: .45rem 0;
    }
    .service-song-richtext ul,
    .service-song-richtext ol {
      margin: .45rem 0 .45rem 1.5rem;
      padding-left: 1.2rem;
    }
    .service-chord-resource-list {
      display: grid;
      gap: 1rem;
    }
    .service-chord-resource-card {
      border:1px solid var(--border-color, var(--border));
      border-radius: 8px;
      padding: 1rem;
    }
    .service-chord-resource-card__header {
      align-items: flex-start;
      display: flex;
      gap: 1rem;
      justify-content: space-between;
    }
    .service-chord-resource-card h3 {
      margin: 0 0 .5rem;
    }
    .service-chord-key-chip {
      background:var(--primary-soft);
      border-radius: 999px;
      color:var(--primary-text);
      display: inline-flex;
      gap: .35rem;
      padding: .25rem .65rem;
    }
    .service-chord-transpose-toolbar {
      align-items: center;
      display: inline-flex;
      flex: 0 0 auto;
      gap: .5rem;
    }
    .service-chord-tone-button {
      min-width: 2.25rem;
      padding-inline: .65rem;
    }
    .service-chord-tone-label {
      color:var(--text-2);
      font-weight: 700;
    }
    .service-chord-text {
      background:var(--text);
      border-radius: 8px;
      color:var(--surface-2);
      font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
      line-height: 1.65;
      margin: 1rem 0 0;
      overflow: auto;
      padding: 1rem;
      tab-size: 4;
      white-space: pre;
    }

/* escuela biblica (antes en modules/bible-school/views/bible-school.views.ts) */
.bible-school-classroom-image{max-width:260px;border-radius:8px;margin-bottom:16px}
      .bible-school-detail .button-row form{display:inline-flex}
    

      .bible-school-relation{margin-top:16px}
      .child-detail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}
      .child-detail-toolbar h2,.protected-title{margin:0 0 14px}
      .protected-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-bottom:12px}
      .protected-card{border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface-2);min-height:92px}
      .protected-card .label{font-weight:700;color:var(--text-3);margin-bottom:8px}
      .protected-card .value{white-space:pre-wrap}
      .relation-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start;overflow:hidden}
      .relation-form-fields{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:8px;min-width:0}
      .relation-form-fields--wide{grid-template-columns:repeat(4,minmax(150px,1fr));flex-basis:680px}
      .relation-form-top{padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2);margin:8px 0 14px}
      .relation-form input,.relation-form select{min-height:38px;max-width:100%;min-width:0}
      .relation-checks{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap;grid-column:1 / -1;min-width:0}
      .relation-checks label{display:inline-flex;align-items:center;gap:8px;line-height:1.25;max-width:100%}
      .relation-checks span{white-space:normal}
      .relation-checks input[type=checkbox]{width:18px;height:18px;min-width:18px;accent-color:var(--primary)}
      .relation-form .button{white-space:normal;max-width:100%}
      .relation-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:0;padding:0;list-style:none}
      .relation-card{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface)}
      .relation-card--primary{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}
      .relation-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
      .relation-card__remove{margin:-4px -4px 0 0}
      .relation-card .chip--primary{display:inline-block;margin-bottom:6px;border-color:var(--primary);background:var(--primary-soft);color:var(--primary-active);font-weight:700}
      .relation-card strong{display:block;margin-bottom:6px}
      .relation-card .meta{display:flex;gap:6px;flex-wrap:wrap;color:var(--text-3);font-size:.92rem}
      .relation-card .chip{border:1px solid var(--border);border-radius:999px;padding:2px 8px;background:var(--surface-2)}
      .notification-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
      .notification-card{border:1px solid var(--border);border-radius:14px;padding:12px;background:var(--surface-2)}
      .notification-card__title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
      .notification-card__title strong{font-size:1rem}
      .notification-card__meta{display:grid;gap:6px;color:var(--text-3);font-size:.92rem}
      .notification-card__channels{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
      .attendance-history{width:100%;border-collapse:collapse}
      .attendance-history th,.attendance-history td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
      .attendance-history th{font-weight:800;color:var(--text-2);background:var(--surface-2)}
      .attendance-history-wrap{overflow:auto;border:1px solid var(--border);border-radius:14px}
      .notice.warning{padding:12px;margin-top:12px}
      @media(max-width:980px){.relation-form{grid-template-columns:1fr}.relation-form-fields,.relation-form-fields--wide{grid-template-columns:1fr}}
    

      .bible-school-detail .button-row form{display:inline-flex}
      .bible-school-history{margin:0;padding-left:18px}.bible-school-history li{display:flex;gap:8px;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border-color,var(--border))}
    

      .bible-school-today .panel-title{display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap}
      .bible-school-today__date{border:1px solid var(--border);border-radius:999px;padding:2px 10px;background:var(--surface-2);color:var(--text-2);font-size:12px}
      .bible-school-today .stat--alert strong{color:var(--warning)}
      .bible-school-today .stat--alert{border-color:var(--warning-border);background:var(--warning-soft)}
      .bible-school-today__hint{margin:12px 0 0}
    

    .bible-school-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
    @media (max-width: 980px){.bible-school-links{grid-template-columns:repeat(2,minmax(0,1fr))}}
    @media (max-width: 640px){.bible-school-links{grid-template-columns:1fr}}

/* eventos de grupo · detalle (antes en modules/group-events/views/detail.view.ts) */
.group-event-attendance-list{display:grid;gap:10px}
      .group-event-attendance-row{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(150px,220px);gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:0 6px 18px rgba(15,23,42,.05)}
      .group-event-attendance-member{display:flex;flex-direction:column;gap:2px}
      .group-event-attendance-member strong{font-weight:800;color:var(--text)}
      .group-event-attendance-member small{color:var(--text-3)}
      .group-event-attendance-date{font-weight:700;color:var(--text-2);text-align:right}
      .group-event-attendance-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:6px 12px;font-weight:800;font-size:13px;white-space:nowrap}
      .group-event-attendance-badge--present{background:var(--success-soft);color:var(--success-text)}
      .group-event-attendance-badge--absent{background:var(--danger-soft);color:var(--danger-strong)}
      .group-event-attendance-badge--excused{background:var(--warning-soft);color:var(--warning-text)}
      .group-event-attendance-badge--no_response{background:var(--border);color:var(--text-2)}
      .group-event-attendance-empty{padding:18px;border:1px dashed var(--border-2);border-radius:14px;color:var(--text-3);background:var(--surface-2)}
      .group-event-attendance-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
      .group-event-attendance-actions form{margin:0;display:inline}
      .group-event-attendance-action{border:1px solid var(--border-2);background:var(--surface);color:var(--text-2);border-radius:999px;padding:6px 12px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap}
      .group-event-attendance-action:hover{border-color:var(--border-3);background:var(--surface-3)}
      .group-event-attendance-action:disabled{cursor:default}
      .group-event-attendance-action--present.is-active{background:var(--success-soft);border-color:var(--success-border);color:var(--success-text)}
      .group-event-attendance-action--absent.is-active{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger-strong)}
      .group-event-attendance-action--excused.is-active{background:var(--warning-soft);border-color:var(--warning-border);color:var(--warning-text)}
      .group-event-attendance-action--no_response{color:var(--text-3)}
      .group-event-attendance-row{grid-template-columns:minmax(160px,1fr) auto minmax(130px,190px) auto}
      @media (max-width: 980px){.group-event-attendance-row{grid-template-columns:minmax(150px,1fr) auto auto}.group-event-attendance-date{grid-column:1/-1;text-align:left}}
      @media (max-width: 760px){.group-event-attendance-row{grid-template-columns:1fr;align-items:start}.group-event-attendance-date{text-align:left}.group-event-attendance-actions{justify-content:flex-start}}

/* nuevos creyentes · detalle (antes en modules/new-believers/views/detail.view.ts) */
.new-believers-quick-assignment{border-top:1px solid var(--border-color,var(--border));margin-top:16px;padding-top:16px}
    .new-believers-quick-assignment .form-section{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px;align-items:end}
    .new-believers-quick-assignment .form-actions{margin-top:12px}
    .new-believers-followup-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:18px;align-items:start}
    .new-believers-followup-history .timeline{display:grid;gap:12px}
    .new-believers-followup-history .timeline-item{border:1px solid var(--border-color,var(--border));border-radius:10px;background:var(--surface);padding:14px;box-shadow:0 1px 2px rgba(15,23,42,.05)}
    .new-believers-followup-history .timeline-item__header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:8px}
    .new-believers-followup-history .timeline-item__meta{display:grid;gap:4px}
    .new-believers-followup-history .timeline-item__date{color:var(--text-3);font-size:12px;white-space:nowrap}
    .new-believers-followup-history .timeline-item__notes{margin:8px 0 0;white-space:pre-wrap}
    .new-believers-followup-form{border:1px solid var(--border-color,var(--border));border-radius:10px;background:var(--surface-2);padding:14px}
    .nb-followup-count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:12px;font-weight:700}
    .nb-closed-notice{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
    .nb-closed-date{color:var(--text-2);font-size:.92rem;margin-top:4px}
    .nb-empty-answer{color:var(--text-4);font-style:italic}
    @media(max-width:900px){.new-believers-followup-layout{grid-template-columns:1fr}.new-believers-quick-assignment .form-section{grid-template-columns:1fr}}

/* nuevos creyentes · campos (antes en modules/new-believers/views/fields.view.ts) */
.nb-fields-count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:12px;font-weight:700}
    .nb-fields-hint{margin:0 0 14px;color:var(--text-3)}
    .nb-fields-empty{margin:0;color:var(--text-3)}
    .nb-fields-table{width:100%;border-collapse:collapse}
    .nb-fields-table th,.nb-fields-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
    .nb-fields-table th{font-weight:800;color:var(--text-2);background:var(--surface-2);white-space:nowrap}
    .nb-fields-table code{background:var(--surface-3);border-radius:6px;padding:2px 6px;font-size:.9em}
    .nb-fields-row--inactive{opacity:.62}
    .nb-fields-options{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
    .nb-fields-options .chip{border:1px solid var(--border);border-radius:999px;padding:2px 8px;background:var(--surface-2);font-size:.85em;color:var(--text-2)}
    .nb-fields-actions{white-space:nowrap}
    .nb-fields-actions form{display:inline-flex;margin-left:6px}

/* nuevos creyentes · listado (antes en modules/new-believers/views/list.view.ts) */
.nb-indicators{border:1px solid var(--border);border-radius:12px;background:var(--surface);margin:0 0 16px;padding:12px 14px}
      .nb-indicators>summary{cursor:pointer;display:flex;align-items:center;gap:10px;list-style:none}
      .nb-indicators>summary::-webkit-details-marker{display:none}
      .nb-indicators__period{border:1px solid var(--border);border-radius:999px;padding:2px 10px;background:var(--surface-2);color:var(--text-2);font-size:12px}
      .nb-indicators__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:12px}
      .nb-indicators__card{border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--surface-2)}
      .nb-indicators__card h3{margin:0 0 8px;font-size:.95rem;color:var(--text-2)}
      .nb-indicators__card ul{margin:0;padding:0;list-style:none;display:grid;gap:6px}
      .nb-indicators__card li{display:flex;justify-content:space-between;gap:10px;color:var(--text-2)}
      .nb-indicators__card strong{font-variant-numeric:tabular-nums}

/* exportaciones (antes en modules/data-exports/views/data-exports.view.ts) */
.data-export-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
      .data-export-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}
      .data-export-grid label{display:grid;gap:6px;font-weight:700;color:var(--text-2)}
      .data-export-grid select,.data-export-grid input{width:100%;border:1px solid var(--border-2);border-radius:6px;padding:10px;background:var(--surface);color:var(--text)}
      .data-export-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap;margin:0 0 16px}
      .data-export-fieldset{border:1px solid var(--border);border-radius:8px;padding:16px;margin:0;display:grid;gap:12px}
      .data-export-fieldset[hidden]{display:none}
      .data-export-fieldset legend{font-weight:800;padding:0 8px;color:var(--text)}
      .data-export-checkboxes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px}
      .data-export-checkboxes label{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:6px;padding:9px 10px;background:var(--surface-2)}
      .data-export-checkboxes input{width:auto}
      @media (max-width: 980px){.data-export-grid,.data-export-checkboxes{grid-template-columns:1fr 1fr}}
      @media (max-width: 640px){.data-export-grid,.data-export-checkboxes{grid-template-columns:1fr}.data-export-actions{justify-content:stretch}.data-export-actions .button{width:100%}}
      .data-export-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
      .data-export-tabs .is-current{pointer-events:none}
      .data-export-check{display:flex!important;align-items:center;gap:8px;align-self:end;font-weight:600}
      .data-export-check input{width:auto!important}
      .data-export-grid label[hidden],.data-export-check[hidden]{display:none!important}

/* carga de datos (modules/data-exports/imports) */
      .data-import-file{display:grid;gap:6px;margin:0 0 16px;font-weight:700;color:var(--text-2)}
      .data-import-file input{border:1px dashed var(--border-2);border-radius:6px;padding:14px;background:var(--surface-2);color:var(--text)}
      .data-import-file small{font-weight:500;color:var(--text-3)}
      .data-import-hint{margin:0 0 10px;color:var(--text-3);font-size:13px}
      .data-import-columns{border:1px solid var(--border);border-radius:8px;padding:16px;margin:0;display:grid;gap:10px}
      .data-import-columns[hidden]{display:none}
      .data-import-columns legend{font-weight:800;padding:0 8px;color:var(--text)}
      .data-import-values{display:block;margin-top:4px;color:var(--text-3);font-size:12px}
      .data-import-summary{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-wrap:wrap;gap:10px 24px}
      .data-import-summary li{color:var(--text-2)}
      .data-import-summary strong{font-size:20px;font-variant-numeric:tabular-nums;color:var(--text);margin-right:4px}
      .data-import-row--danger td,.data-import-row--danger th{background:var(--danger-soft)}
      .data-import-row--warning td,.data-import-row--warning th{background:var(--warning-soft)}
      .data-import-row--success td,.data-import-row--success th{background:var(--success-soft)}
      .data-import-row--info td,.data-import-row--info th{background:var(--info-soft)}

/* notificaciones (antes en modules/admin-notifications/views/notifications.view.ts) */
.notification-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:2px solid var(--border);padding:0 2px;margin-bottom:-2px}
      .notification-tab{display:inline-flex;align-items:center;gap:7px;padding:11px 15px;border-radius:9px 9px 0 0;color:var(--text-2);font-weight:600;font-size:14px;border:1px solid transparent;border-bottom:0;margin-bottom:-2px;text-decoration:none}
      .notification-tab:hover,.notification-tab:focus{background:var(--surface-2);color:var(--text)}
      .notification-tab--active{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:0 -2px 0 var(--primary) inset}
      .notification-tab__count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:12px;font-variant-numeric:tabular-nums}
      .notification-tab--active .notification-tab__count{background:var(--primary-soft);color:var(--primary-active)}

/* preferencias de notificacion (antes en modules/admin-notifications/views/preferences.view.ts) */
.preferences-hint{margin:0 0 14px;color:var(--text-3)}
    .preferences-empty{margin:0;color:var(--text-3)}
    .preferences-table{width:100%;border-collapse:collapse}
    .preferences-table th,.preferences-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}
    .preferences-table th{font-weight:800;color:var(--text-2);background:var(--surface-2);white-space:nowrap}
    .preferences-cell{text-align:center;white-space:nowrap}
    .preferences-cell input{width:18px;height:18px;accent-color:var(--primary)}
    .preferences-cell--blocked{background:var(--surface-2);color:var(--text-4)}
    .preferences-cell small{display:block;font-size:11px;color:var(--text-4);margin-top:4px}
    .preferences-table + .form-actions{margin-top:14px}

/* app-api · tablero de preparacion (antes una tabla de claves tecnicas ilegible) */
    .readiness-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;margin:12px 0 0;padding:0}
    .readiness-card{border:1px solid var(--border);border-left:4px solid var(--border-2);border-radius:10px;padding:12px 14px;background:var(--surface);display:grid;gap:6px;align-content:start}
    .readiness-card__head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
    .readiness-card__head strong{font-size:14px;line-height:1.25}
    .readiness-card__value{margin:0;font-weight:700;color:var(--text);font-size:13.5px}
    .readiness-card__hint{margin:0;color:var(--text-3);font-size:12.5px;line-height:1.45}
    .readiness-card--ready{border-left-color:var(--success,#2e7d32)}
    .readiness-card--warning{border-left-color:var(--warning,#c77700)}
    .readiness-card--disabled,.readiness-card--info{border-left-color:var(--border-3,var(--border-2))}
    .panel-hint{margin:4px 0 0;color:var(--text-3);font-size:13px;line-height:1.5}


/* ------------------------------------------------ pantallas sin armazon */
.auth-shell,.standalone-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}
.auth-panel,.standalone-panel{width:min(440px,100%);display:grid;gap:14px;padding:26px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-3)}
.standalone-panel--wide{width:min(760px,100%)}
.auth-brand{text-align:center;display:grid;gap:8px;justify-items:center;margin-bottom:4px}
.auth-brand h1{margin:0;font-size:23px;line-height:1.2;color:var(--text)}
.auth-brand p,.auth-copy{margin:0;color:var(--text-3);font-size:13.5px;line-height:1.5}
.auth-brand img{max-width:170px;max-height:100px;object-fit:contain;border:1px solid var(--border);border-radius:var(--radius);padding:8px;background:var(--surface-2)}
.stack,.auth-form{display:grid;gap:13px}
.stack label,.auth-form label{display:grid;gap:6px;font-size:12.5px;font-weight:600;color:var(--text-2)}
.stack input,.auth-form input,.auth-form select{width:100%;min-height:var(--field-h);border:1px solid var(--border-2);border-radius:8px;padding:8px 11px;background:var(--surface);color:var(--text);font:inherit;font-size:13.5px}
.stack input:focus,.auth-form input:focus,.auth-form select:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}
.stack button,.auth-form button{border:0;border-radius:8px;min-height:var(--field-h);padding:0 14px;background:var(--primary);color:var(--on-primary);font:inherit;font-weight:600;font-size:13.5px;cursor:pointer}
.stack button:hover,.auth-form button:hover{background:var(--primary-hover)}
.auth-form button[disabled]{background:var(--border-3);cursor:not-allowed}
.check-row{grid-template-columns:auto 1fr;align-items:center;font-weight:400}
.check-row input{width:auto;min-height:0}
.auth-links{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;font-size:13px}
.auth-links a,.public-header a{color:var(--primary);text-decoration:none;font-weight:600}
.auth-links a:hover,.public-header a:hover{text-decoration:underline}
.language-links{display:flex;gap:8px}
.auth-alert{padding:10px 12px;border-radius:var(--radius);margin:0;font-size:13.5px;border:1px solid transparent}
.auth-alert--error{background:var(--danger-soft);color:var(--danger-strong);border-color:var(--danger-border)}
.auth-alert--success{background:var(--success-soft);color:var(--success-text);border-color:var(--success-border)}

/* paginas publicas */
.public-header{border-bottom:1px solid var(--border);padding:14px 22px;background:var(--surface)}
.public-main{width:min(960px,100%);margin:0 auto;padding:26px 22px;line-height:1.65;color:var(--text)}
.public-main h1,.public-main h2,.public-main h3{color:var(--text)}

/* instalador y otras pantallas de paso */
.standalone-steps{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 6px;padding:0;list-style:none}
.standalone-step{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:var(--radius-pill);background:var(--surface-3);color:var(--text-3);font-size:12.5px;font-weight:600}
.standalone-step--done{background:var(--success-soft);color:var(--success-text)}
.standalone-step--current{background:var(--primary-soft);color:var(--primary-text)}
