*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial;background:#f5f7fb;color:#172033}.hidden{display:none!important}.login-screen{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:32px;width:min(410px,100%);text-align:center;box-shadow:0 20px 50px #0001}.login-card.wide{width:min(520px,100%)}.apple{font-size:44px}.login-card h1{margin:8px 0}.login-card p{color:#64748b}.login-card form{display:grid;gap:10px}.login-card input,.login-card button{padding:12px;border:1px solid #d5dae3;border-radius:9px;font:inherit}.primary{background:#2563eb;color:#fff;border:0;font-weight:800;cursor:pointer}.secondary{background:#fff;border:1px solid #d5dae3;border-radius:9px;padding:10px 14px;font-weight:800;cursor:pointer}.link{border:0!important;background:none;margin-top:10px;color:#2563eb;cursor:pointer}.message{min-height:22px;margin-top:10px;color:#2563eb}.error{color:#dc2626}.success{color:#15803d}
#app{display:flex;min-height:100vh}.sidebar{width:255px;background:#111827;color:#fff;padding:20px 14px;display:flex;flex-direction:column}.brand{font-size:20px;font-weight:800;padding:10px 12px 25px}.sidebar nav{display:grid;gap:5px}.sidebar nav button{border:0;background:transparent;color:#cbd5e1;text-align:left;padding:11px;border-radius:8px;cursor:pointer;font:inherit}.sidebar nav button.active,.sidebar nav button:hover{background:#273449;color:#fff}.userbox{margin-top:auto;display:grid;gap:6px;font-size:12px;color:#cbd5e1;padding:8px}.userbox b{color:#fff}.userbox button{border:1px solid #334155;background:transparent;color:#fff;border-radius:8px;padding:9px;cursor:pointer}
main{flex:1;padding:28px 32px;min-width:0}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px}header small{color:#64748b;letter-spacing:1.3px;font-weight:800}header h1{margin:5px 0;font-size:30px}.header-actions{display:flex;gap:8px}.header-actions .primary{border-radius:9px;padding:10px 14px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card,.panel,.tablebox{background:#fff;border:1px solid #e5e7eb;border-radius:14px}.card{padding:18px}.label{color:#64748b;font-size:13px}.value{font-size:27px;font-weight:800;margin-top:7px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:15px}.panel{padding:18px}.panel h3{margin-top:0}.toolbar{display:flex;gap:10px;margin-bottom:14px}.toolbar input{flex:1;padding:11px;border:1px solid #d5dae3;border-radius:8px}.tablebox{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px;border-bottom:1px solid #eef0f4;text-align:left;font-size:13px;white-space:nowrap}.table th{background:#f8fafc;color:#64748b}.badge{font-size:11px;font-weight:800;border-radius:99px;padding:4px 8px;background:#ffedd5}.badge.green{background:#dcfce7}.badge.red{background:#fee2e2}.badge.blue{background:#dbeafe}.modal{position:fixed;inset:0;background:#0008;display:grid;place-items:center;padding:15px;z-index:50}.dialog{width:min(900px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:14px;padding:22px;position:relative}.close{position:absolute;right:15px;top:10px;border:0;background:none;font-size:28px;cursor:pointer}.dialog form{display:grid;gap:12px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dialog label{display:grid;gap:6px;font-size:12px;font-weight:800;color:#475569}.full{grid-column:1/-1}.dialog input,.dialog select,.dialog textarea{width:100%;padding:10px;border:1px solid #d5dae3;border-radius:8px;font:inherit}.dialog textarea{min-height:80px}.actions{display:flex;justify-content:flex-end;gap:8px}.notice{padding:11px;border-radius:8px;background:#eff6ff;color:#1d4ed8;font-size:13px}.item{border:1px solid #e5e7eb;border-radius:8px;padding:11px;margin:7px 0}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;border:1px solid #ddd}.permission-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.check{display:flex!important;grid-template-columns:none!important;align-items:center;gap:8px!important;font-weight:500!important;border:1px solid #e5e7eb;padding:9px;border-radius:8px}.check input{width:auto}.low{color:#b91c1c;font-weight:800}.kpi{display:flex;justify-content:space-between;align-items:center}.empty{padding:30px;text-align:center;color:#64748b}.danger{color:#b91c1c}.small{font-size:12px;color:#64748b}
@media(max-width:900px){.sidebar{width:70px}.brand span,.userbox span,.userbox b{display:none}.sidebar nav button{font-size:0}.sidebar nav button::first-letter{font-size:18px}main{padding:18px}.cards{grid-template-columns:1fr 1fr}.grid,.formgrid{grid-template-columns:1fr}.full{grid-column:auto}}
@media(max-width:600px){.cards{grid-template-columns:1fr}header{align-items:flex-start}.header-actions .secondary{display:none}.header-actions .primary{padding:9px}.permission-grid{grid-template-columns:1fr}}
.photo-section{margin-top:18px;padding-top:10px;border-top:1px solid var(--border,#2b2b2b)}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:12px}
.photo-card,.photo-preview-item{border:1px solid var(--border,#2b2b2b);border-radius:12px;padding:8px;background:var(--panel,#171717);overflow:hidden}
.photo-card img,.photo-preview-item img{display:block;width:100%;height:120px;object-fit:cover;border-radius:8px}
.photo-card small,.photo-preview-item small{display:block;margin-top:6px;word-break:break-word;color:#aaa}
.photo-fail{height:120px;display:flex;align-items:center;justify-content:center;text-align:center;color:#f88}
.preview-grid{margin-bottom:10px}
@media(max-width:700px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-card img,.photo-preview-item img{height:110px}}

/* Fotos por zonas */
.photo-section-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.photo-section-title h3{margin:0 0 4px}
.photo-section-title p{margin:0;color:#64748b;font-size:13px}
.photo-count{font-weight:900;background:#eff6ff;color:#1d4ed8;padding:7px 10px;border-radius:999px;white-space:nowrap}
.photo-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.photo-slot{border:1px solid #dbe1ea;border-radius:14px;padding:10px;background:#fff;min-width:0}
.photo-slot.has-photo{border-color:#93c5fd}
.photo-slot-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:9px}
.photo-slot-head b{display:block;font-size:14px;color:#172033}
.photo-slot-head small{display:block;color:#64748b;font-size:11px;margin-top:2px}
.photo-upload-btn{display:block!important;text-align:center;background:#f8fafc;border:1px dashed #94a3b8;border-radius:9px;padding:9px!important;color:#1d4ed8!important;cursor:pointer;font-size:12px!important}
.photo-upload-btn input{display:none!important}
.photo-slot-preview{margin-top:9px;height:145px;border-radius:10px;overflow:hidden;background:#f1f5f9;display:grid;place-items:center}
.photo-slot-preview img{width:100%;height:100%;object-fit:cover;border:0!important;border-radius:0!important}
.photo-empty,.photo-existing{display:grid;place-items:center;gap:5px;text-align:center;color:#94a3b8;font-size:12px;padding:10px}
.photo-existing span{font-size:28px}
.photo-note{margin-top:12px}
@media(max-width:1000px){.photo-slots{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.photo-slots{grid-template-columns:1fr 1fr}.photo-slot-preview{height:120px}.photo-section-title{align-items:center}}
