.photo-upload { display:flex; align-items:center; justify-content:space-between; gap:16px; border:1px dashed #9fb4be; background:#f7fafb; border-radius:9px; padding:13px; margin:10px 0; }
.photo-upload strong, .photo-upload p { display:block; margin:0; }
.photo-upload p { margin-top:3px; }
.button.disabled { opacity:.55; pointer-events:none; }
.photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin:12px 0; }
.photo-card { margin:0; border:1px solid var(--line); border-radius:8px; overflow:hidden; background:#fff; }
.open-photo { position:relative; display:block; width:100%; padding:0; border:0; background:#e7ecef; cursor:zoom-in; }
.photo-card img { width:100%; height:120px; object-fit:cover; display:block; }
.zoom-hint { position:absolute; right:7px; bottom:7px; padding:4px 7px; border-radius:20px; background:rgba(23,50,71,.85); color:white; font-size:9px; opacity:0; transition:opacity .15s; }
.open-photo:hover .zoom-hint, .open-photo:focus .zoom-hint { opacity:1; }
.photo-card figcaption { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px; font-size:10px; }
.photo-card figcaption span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.remove-photo { border:0; background:transparent; color:var(--danger); font-size:10px; cursor:pointer; }
.photo-empty { grid-column:1/-1; color:var(--muted); font-size:12px; }
.mode-state { padding:5px 9px; border-radius:20px; background:#e9f4ed; color:#28613a; font-size:11px; font-weight:700; white-space:nowrap; }
.brand-logo { display:block; width:178px; height:50px; object-fit:contain; object-position:left center; }
.empty-brand-logo { display:block; width:min(330px,75vw); height:auto; margin:0 auto 24px; border-radius:18px; }
.topbar .top-actions span { display:inline-flex; align-items:center; letter-spacing:0; line-height:1.2; }
.mode-state { padding:6px 10px; background:#edf5f1; color:#315c46; font-size:12px; font-weight:600; }
.save-state { padding:6px 2px; color:#397452; font-size:12px; font-weight:600; letter-spacing:0; white-space:nowrap; }
.viewer-open { overflow:hidden; }
.photo-viewer { position:fixed; inset:0; z-index:100; display:none; align-items:center; justify-content:center; padding:28px; background:rgba(7,24,35,.88); }
.photo-viewer.visible { display:flex; }
.photo-viewer-dialog { position:relative; display:flex; align-items:center; justify-content:center; width:min(1100px,96vw); height:min(820px,92vh); }
.photo-viewer-dialog img { max-width:100%; max-height:calc(100% - 48px); object-fit:contain; border-radius:7px; box-shadow:0 20px 60px rgba(0,0,0,.35); }
.photo-viewer-close, .photo-viewer-nav { position:absolute; z-index:2; border:0; border-radius:50%; background:rgba(255,255,255,.94); color:var(--ink); cursor:pointer; box-shadow:0 4px 18px rgba(0,0,0,.25); }
.photo-viewer-close { width:40px; height:40px; right:0; top:0; font-size:27px; line-height:1; }
.photo-viewer-nav { width:46px; height:46px; top:50%; transform:translateY(-50%); font-size:34px; line-height:1; }
.photo-viewer-nav.previous { left:0; }
.photo-viewer-nav.next { right:0; }
.photo-viewer-caption { position:absolute; left:50%; bottom:0; transform:translateX(-50%); max-width:80%; color:white; font-size:12px; text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.equipment-card { grid-template-columns:auto minmax(0,1fr) auto; }
.equipment-card-main { min-width:0; }
.equipment-sequence { display:grid !important; place-items:center; width:34px; height:34px; margin:0 !important; border-radius:50%; background:var(--blue); color:#fff !important; font-size:14px !important; font-weight:900; }
.equipment-card-actions { display:flex; align-items:center; gap:10px; }
.move-equipment-dialog { width:min(520px,calc(100vw - 28px)); border:0; border-radius:14px; padding:0; color:var(--ink); box-shadow:0 20px 60px rgba(23,50,71,.28); }
.move-equipment-dialog::backdrop { background:rgba(16,42,58,.55); }
.move-equipment-dialog form { padding:22px; }
.move-equipment-dialog h2 { margin:0 0 10px; color:var(--blue); }
.move-equipment-dialog p { margin:0 0 18px; color:var(--muted); }
.move-equipment-dialog p strong { color:var(--ink); }
.move-equipment-note { margin-top:12px; padding:10px 12px; border-radius:8px; background:#eef6f9; color:var(--blue); font-size:12px; line-height:1.45; }
.dialog-actions { display:flex; justify-content:flex-end; gap:9px; margin-top:20px; }
.summary-scope { display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 4px; }
.summary-location { margin-top:22px; padding-top:2px; break-before:auto; }
.summary-location + .summary-location { border-top:3px solid var(--blue); padding-top:20px; }
.summary-location-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:10px; padding:11px 13px; border-left:5px solid var(--blue); background:#eef5f7; }
.summary-location-head span { color:var(--blue); font-size:12px; font-weight:900; letter-spacing:1px; }
.summary-location-head h3 { margin:2px 0; color:var(--ink); font-size:18px; }
.summary-location-head p { margin:0; color:var(--muted); font-size:11px; }
.summary-location-head > strong { white-space:nowrap; }
.summary-location td .priority { display:inline-block; white-space:nowrap; }
.summary-equipment { margin-top:18px; padding:16px; border:1px solid var(--line); border-radius:9px; break-inside:avoid; }
.summary-equipment h3 { margin:0 0 8px; color:var(--blue); }
.summary-equipment h4 { margin:12px 0 5px; }
.summary-equipment p, .summary-equipment li { line-height:1.5; }
.client-group { border:1px solid var(--line); border-radius:10px; background:#fff; overflow:hidden; flex:0 0 auto; }
.client-group-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 11px; background:#f2f6f7; border-bottom:1px solid var(--line); }
.client-group-head strong, .client-group-head span { display:block; }
.client-group-head strong { color:var(--blue); font-size:13px; }
.client-group-head span { color:var(--muted); font-size:10px; margin-top:2px; }
.client-order-actions { display:flex; gap:4px; }
.client-order-actions button { width:27px; height:27px; border:1px solid #b9c7ce; border-radius:6px; background:white; color:var(--ink); font-weight:900; cursor:pointer; }
.client-order-actions button:disabled { opacity:.28; cursor:default; }
.client-group .survey-item { margin:5px; }
.survey-empty { color:var(--muted); font-size:12px; }
@media print {
  .no-print { display:none !important; }
  .summary-equipment { border-color:#aaa; }
  .summary-location td .priority { border:1px solid currentColor; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  body.print-equipment .editor-head,
  body.print-equipment .equipment-toolbar,
  body.print-equipment .equipment-list,
  body.print-equipment .equipment-actions,
  body.print-equipment .photo-upload,
  body.print-equipment .remove-photo { display:none !important; }
  body.print-equipment .tab-panel { display:none !important; }
  body.print-equipment [data-panel="ficha3"] { display:block !important; padding:0; border:0; box-shadow:none; }
  body.print-equipment #equipmentEditor { display:block !important; margin:0; padding:0; border:0; }
  body.print-equipment .form-section { break-inside:avoid; }
  body.print-equipment input,
  body.print-equipment textarea,
  body.print-equipment select { border-color:#777; background:white; }
}
@media (max-width:900px) {
  .topbar { height:auto; min-height:72px; flex-wrap:wrap; padding:12px 16px; }
  .top-actions { width:100%; overflow:visible; padding-bottom:2px; flex-wrap:wrap; }
  .top-actions .button { white-space:nowrap; }
  .app-shell { min-height:calc(100vh - 118px); }
  .sidebar { display:flex; border-right:0; border-bottom:1px solid var(--line); padding:12px 16px; }
  .sidebar .search, .sidebar .storage-note { display:none; }
  .survey-list { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(250px,78vw); gap:10px; overflow-x:auto; padding-bottom:5px; }
  .survey-item { min-width:0; }
  .head-actions { width:100%; overflow-x:auto; padding-bottom:3px; }
  .equipment-card { grid-template-columns:auto minmax(0,1fr); }
  .equipment-card-actions { justify-content:space-between; }
  .equipment-card-actions { grid-column:2; }
  .equipment-card-actions { flex-wrap:wrap; justify-content:flex-start; }
  .equipment-actions { gap:10px; align-items:flex-start; }
  .equipment-actions>div { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
}
@media (max-width:600px) {
  .topbar { display:grid; grid-template-columns:58px minmax(0,1fr); align-items:start; gap:10px; padding:10px 12px; position:relative; }
  .brand-logo { width:54px; height:54px; object-fit:contain; object-position:center; border-radius:7px; }
  .top-actions { margin:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; width:100%; }
  .top-actions .mode-state, .top-actions .save-state { justify-content:center; min-height:28px; padding:6px 8px; border-radius:7px; font-size:10px; text-align:center; white-space:normal; }
  .top-actions .save-state { background:#f3f7f5; }
  .top-actions .button { width:100%; padding:9px 7px; font-size:11px; }
  .top-actions #installBtn { grid-column:1/-1; }
  .sidebar { gap:10px; padding:10px 12px 12px; }
  .sidebar .button.wide { padding:11px; }
  .survey-list { grid-auto-columns:minmax(270px,88vw); }
  .client-group-head { padding:9px 10px; }
  .client-group .survey-item { padding:9px; }
  .workspace { padding:14px 10px; }
  .summary-scope .button { flex:1 1 150px; }
  .summary-location-head { align-items:flex-start; flex-direction:column; gap:6px; }
  .empty-state { margin:7vh auto; }
  .empty-brand-logo { width:min(210px,58vw); margin-bottom:18px; }
  .empty-state h1 { font-size:25px; }
  .empty-state p { font-size:13px; }
}
