*{box-sizing:border-box}body{margin:0;background:#f7f8fd;color:#231348;font:16px/1.45 system-ui,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:12px;padding:10px 16px;font-weight:700;background:#e9e7f1;color:#241446}button:hover{filter:brightness(.97)}input,select,textarea{width:100%;padding:12px;border:1px solid #d7d3e3;border-radius:10px;background:white}label{display:block;margin:12px 0;font-weight:600}label input,label select,label textarea{margin-top:6px}a{color:#067cca}.top{background:white;border-bottom:1px solid #e8e6f0;display:flex;justify-content:space-between;align-items:center;padding:12px clamp(16px,4vw,58px)}.brand{display:flex;gap:10px;align-items:center;color:inherit;text-decoration:none;font-weight:900}.brand img{width:54px;height:54px;object-fit:cover;border-radius:50%}.brand small{display:block;font-weight:500;color:#726985}main{width:min(1140px,94%);margin:35px auto}.card{border-radius:18px;background:#fff;box-shadow:0 5px 20px #2212480d;padding:24px}.login{max-width:420px;margin:70px auto}.login h1{margin-top:0}.login button[type=submit]{background:#f20b7f;color:white;width:100%;margin-top:10px}.heading,.sectionbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.heading h1{font-size:clamp(26px,4vw,40px);margin:4px 0}.eyebrow{color:#f20b7f;font-weight:900;letter-spacing:.1em}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:25px 0}.stats strong{display:block;font-size:38px;color:#ee1480}.tabs{display:flex;gap:10px;border-bottom:1px solid #ded9e9;margin-bottom:22px;padding-bottom:13px;overflow:auto}.tabs button.active{background:#29154d;color:white}.tab-pane>.sectionbar{margin:20px 0}.tab-pane>p{color:#695d7c}.primary{background:#ef1680;color:white;border:0;border-radius:11px;padding:12px 18px;font-weight:800;cursor:pointer;text-decoration:none}.items{display:grid;gap:10px;margin-top:16px}.item{background:white;padding:16px 20px;border-radius:13px;display:flex;align-items:center;justify-content:space-between;gap:15px}.item strong{font-size:17px}.meta{font-size:13px;color:#766b87;margin:6px 0}.actions{display:flex;gap:7px;flex-wrap:wrap}.actions button{font-size:13px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:15px;margin-top:22px}.photo{background:white;border-radius:15px;overflow:hidden}.photo img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.photo .details{padding:12px}.photo .details p{font-size:13px;color:#6a607e}dialog{border:0;border-radius:18px;padding:25px;width:min(520px,94vw);max-height:90vh;overflow:auto;box-shadow:0 20px 70px #0004}dialog::backdrop{background:#160d37a9}dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.plain{background:transparent}#notice:not(:empty){background:#fff1d2;padding:12px;border-radius:10px;margin:12px 0}.upload{display:inline-block}#searchClients{max-width:420px}@media(max-width:680px){.stats{grid-template-columns:1fr 1fr}.stats .card:last-child{grid-column:span 2}.sectionbar,.item{align-items:flex-start;flex-direction:column}.top{padding:12px}.top #who{display:none}.item .actions{width:100%}}
/* Agenda mensual Jass Eventos */
.calendar-toolbar{display:flex;align-items:center;justify-content:center;gap:12px;margin:22px 0 12px;flex-wrap:wrap}
.calendar-toolbar h3{min-width:220px;text-align:center;text-transform:capitalize;margin:0;font-size:23px}
.calendar-toolbar button{min-width:42px}
.calendar-toolbar button:disabled{opacity:.4;cursor:not-allowed}
.calendar-help{font-size:14px}
.calendar-scroll{overflow-x:auto;max-width:100%;border:1px solid #e4ddeb;border-radius:16px;background:white}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));min-width:910px}
.calendar-weekday{padding:12px;text-align:center;background:#29154d;color:#fff;font-size:13px;font-weight:800}
.calendar-day{border-top:1px solid #eeeaf4;border-right:1px solid #eeeaf4;min-height:126px;padding:8px;display:flex;flex-direction:column;gap:5px;min-width:0}
.calendar-day:nth-child(7n){border-right:0}
.calendar-day.muted{background:#f4f2f8}
.calendar-day.today{background:#fff6fb;box-shadow:inset 0 0 0 2px #ee1480}
.day-top{display:flex;align-items:center;justify-content:space-between}
.day-number{font-weight:800;font-size:15px}
.day-add{width:25px;height:25px;min-width:25px;padding:0;border-radius:50%;background:#f3eafa;color:#6e268c}
.calendar-event{display:block;width:100%;text-align:left;font-weight:700;font-size:12px;padding:7px 8px;line-height:1.35;white-space:normal;overflow-wrap:anywhere;border-radius:7px;background:#e7ecfa;color:#1c3670}
.calendar-event:hover{filter:brightness(.94)}
.calendar-event.status-consulta,.calendar-event.status-cotizado{background:#e6ebf7;color:#224573}
.calendar-event.status-apartado{background:#fff0bf;color:#785100}
.calendar-event.status-confirmado{background:#d4f4e1;color:#17663b}
.calendar-event.status-realizado,.calendar-event.status-liquidado{background:#e9d7f8;color:#592e83}
.calendar-event.status-cancelado{background:#ffe0e0;color:#9d2828}
.calendar-upcoming{margin:28px 0 8px}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}
.detail-field{border:1px solid #e9e4ef;border-radius:10px;padding:10px;overflow-wrap:anywhere}
.detail-field small{display:block;color:#776985;margin-bottom:5px}
.detail-field strong{display:block;font-size:15px}
.detail-field:last-child{grid-column:1/-1}
.modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:9px;margin-top:20px}
.danger-button{background:#fee1e1;color:#9d2020}
@media(max-width:680px){.calendar-grid{min-width:770px;grid-template-columns:repeat(7,minmax(110px,1fr))}.calendar-day{min-height:110px}.calendar-toolbar h3{font-size:19px;min-width:185px}.detail-grid{grid-template-columns:1fr}.detail-field:last-child{grid-column:auto}}

/* Mayor separación de los días y vista de agenda diaria */
.calendar-day{background:#fff;border-color:#d9d1e5;transition:background .16s ease,box-shadow .16s ease;cursor:pointer}
.calendar-day.alternate{background:#efedf5}
.calendar-day.muted{background:#e9e6ef;cursor:default}
.calendar-day:not(.muted):hover,.calendar-day:not(.muted):focus-visible{background:#e6f1ff;box-shadow:inset 0 0 0 3px #1687ce;outline:0;z-index:1}
.calendar-day.today:not(:hover){background:#fff1f9;box-shadow:inset 0 0 0 2px #ee1480}
.calendar-day .day-number{font-size:16px}
.day-event-list{display:grid;gap:9px;margin:15px 0}
.day-event-item{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;width:100%;border:1px solid #e0d9e9;border-radius:12px;padding:14px}
.day-event-item strong{font-size:16px}
.day-event-item span{font-size:13px;font-weight:500}
.day-event-item.status-consulta,.day-event-item.status-cotizado{background:#e6ebf7;color:#224573}
.day-event-item.status-apartado{background:#fff0bf;color:#785100}
.day-event-item.status-confirmado{background:#d4f4e1;color:#17663b}
.day-event-item.status-realizado,.day-event-item.status-liquidado{background:#e9d7f8;color:#592e83}
.day-event-item.status-cancelado{background:#ffe0e0;color:#9d2828}

/* Formulario ampliado para capturar clientes y lugares de eventos */
#recordDialog.client-dialog{width:min(850px,96vw);max-width:850px;max-height:92vh}
#recordDialog.client-dialog #recordFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:22px;row-gap:3px}
#recordDialog.client-dialog #recordFields label{min-width:0}
#recordDialog.client-dialog #recordFields label:has(textarea){grid-column:1/-1}
#recordDialog.client-dialog textarea{min-height:85px;resize:vertical}
#recordDialog [hidden]{display:none!important}
@media(max-width:650px){#recordDialog.client-dialog{width:96vw;padding:18px}#recordDialog.client-dialog #recordFields{grid-template-columns:1fr}#recordDialog.client-dialog #recordFields label:has(textarea){grid-column:auto}}

/* Fichas de clientes */
.client-name-link{background:transparent;border:0;border-radius:5px;color:#241446;padding:2px 4px;margin-left:-4px;font-weight:800;font-size:17px;text-align:left;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px;transition:color .15s ease,text-decoration-color .15s ease}
.client-name-link:hover,.client-name-link:focus-visible{color:#ef1680;text-decoration-color:currentColor;outline:2px solid #ef1680;outline-offset:2px}
#clientDetails{width:min(720px,96vw)}
#clientDetails .detail-field strong{white-space:pre-wrap}

/* Albumes de celebraciones */
.album-admin-grid{display:grid;gap:20px;margin-top:20px}.album-admin-card{background:#fff;border:1px solid #e6e0f0;border-radius:18px;padding:20px}.album-admin-card h3{margin:0 0 5px}.album-admin-card p{color:#675b7a}.album-admin-media{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:14px 0}.album-admin-tile{min-width:0;display:grid;gap:5px}.album-admin-tile img,.album-admin-tile video{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px}.album-admin-tile button{font-size:12px}.album-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.album-file-label{cursor:pointer;display:inline-flex;align-items:center;margin:0}.album-editor{width:min(690px,95vw)}.album-editor textarea{min-height:110px}.album-publish-label{display:flex;align-items:center;gap:10px}.album-publish-label input{width:auto;margin:0}.legacy-gallery{margin-top:28px}.legacy-gallery summary{cursor:pointer}.album-admin-card .danger-button{background:#ffe2e2;color:#8b1e1e}#albumStatus:not(:empty){padding:10px;background:#f2eafb;border-radius:9px;margin:10px 0}
