/* Frontend Layout */
.rfm-frontend{max-width:100%;}
.rfm-frontend-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0;}
.rfm-stage-wrap{width:100%;overflow:hidden;border:1px solid #ddd;border-radius:12px;padding:0;background:#fff;}
.rfm-stage{position:relative;width:100%;height:100%;min-height:280px;border:1px solid #c3c4c7;border-radius:12px;background:#f6f7f7;overflow:hidden;touch-action:manipulation;}

.rfm-stage-inner{position:absolute;left:0;top:0;transform-origin:0 0;}

/* Zoom controls (optional) */
.rfm-zoom-controls{
  position:absolute;
  right: 6px;
  bottom: 4px;
  top: auto;
  z-index:90;
  display:flex;
  gap:5px;
  padding:4px;
  border-radius:12px;
  background: rgba(0,0,0,0.10);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.rfm-zoom-controls button{
  border:1px solid rgba(255,255,255,0.10);
  background: rgba(0,0,0,0.28);
  color: rgba(255,255,255,0.92);
  border-radius: 9px;
  width: 30px;
  height: 30px;
  padding: 0;
  line-height: 30px;
  font-weight: 800;
  font-size: 12px;
  box-shadow: none;
  opacity: 0.88;
}
.rfm-zoom-controls button:hover{background: rgba(0,0,0,0.42);opacity:1;}
.rfm-zoom-controls button:active{transform:translateY(1px);}

@media (max-width: 782px){
  .rfm-zoom-controls{ right:4px; bottom:2px; padding:3px; gap:4px; border-radius:11px; background: rgba(0,0,0,0.08); }
  .rfm-zoom-controls button{ width:28px; height:28px; line-height:28px; font-size:11px; border-radius:8px; }
}

/* Canvas Core Styles (shared) */
.rfm-room{position:absolute;left:0;top:0;background:#fff;border:2px solid #1d2327;width:calc(var(--rfm-room-w) * var(--rfm-px-per-cm) * 1px);height:calc(var(--rfm-room-h) * var(--rfm-px-per-cm) * 1px);}
.rfm-room.rfm-grid-on{background-image:
  linear-gradient(to right, rgba(0,0,0,0.06) 1px, transparent 1px),
  linear-gradient(to bottom, rgba(0,0,0,0.06) 1px, transparent 1px);
  background-size:calc(var(--rfm-grid-cm) * var(--rfm-px-per-cm) * 1px) calc(var(--rfm-grid-cm) * var(--rfm-px-per-cm) * 1px);
}
.rfm-table{position:absolute;user-select:none;border:2px solid #135e96;background:rgba(19,94,150,0.14);border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600;color:#1d2327;
  width:calc(var(--rfm-w) * var(--rfm-px-per-cm) * 1px);
  height:calc(var(--rfm-h) * var(--rfm-px-per-cm) * 1px);
}
.rfm-table.rfm-round{border-radius:999px;}
.rfm-table.selected{outline:3px solid #d63638;outline-offset:2px;}
.rfm-table .rfm-table-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2px;line-height:1.05;gap:1px;overflow:hidden;white-space:normal;word-break:break-word;font-size:9px;}
.rfm-table .rfm-table-label *{max-width:100%;overflow:hidden;text-overflow:ellipsis;word-break:break-word;}

.rfm-table .rfm-table-name{font-size:13px;}
.rfm-table .rfm-table-meta{font-size:11px;font-weight:600;opacity:0.85;}
.rfm-table .rfm-table-extra{font-size:12px;font-weight:700;opacity:0.9;}

/* Booking highlight */
.rfm-table.booked{border-color:#b32d2e;background:rgba(179,45,46,0.16);}

/* Hide non-booked in booked-mode */
.rfm-table.rfm-hidden{display:none !important;}

/* Legend */
.rfm-legend{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;}
.rfm-chip{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;border:1px solid #ddd;}
.rfm-chip.rfm-free{background:#f5fff5;}
.rfm-chip.rfm-booked{background:#fff2f2;}

.rfm-stats{margin-left:auto;font-size:13px;opacity:0.85;}

/* Stats Panel */
.rfm-stats-panel{display:grid;grid-template-columns:1fr;gap:10px;margin:10px 0;}
@media(min-width:900px){.rfm-stats-panel{grid-template-columns:repeat(3,1fr);}}
.rfm-stat-box{background:#fff;border:1px solid #ddd;border-radius:12px;padding:10px;}
.rfm-stat-box .rfm-stat-title{font-weight:700;margin-bottom:8px;}
.rfm-stat-box .rfm-stat-value{font-size:14px;}
.rfm-stat-box .rfm-row{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-top:1px dashed rgba(0,0,0,0.08);} 
.rfm-stat-box .rfm-row:first-of-type{border-top:0;}
.rfm-stat-box .rfm-k{font-weight:600;}
.rfm-stat-box .rfm-v{font-variant-numeric:tabular-nums;}
.rfm-row-group{flex-wrap:wrap;}
.rfm-row-group .rfm-sub{width:100%;font-size:12px;opacity:0.8;margin-top:2px;}
.rfm-stat-error{border-color:#b32d2e;}


/* Pan + minimap */
.rfm-stage.rfm-panning { cursor: grabbing; }
.rfm-stage .rfm-minimap{
  position:absolute;
  right:10px;
  bottom:10px;
  background: rgba(0,0,0,0.08);
  border:1px solid rgba(0,0,0,0.25);
  border-radius:10px;
  overflow:hidden;
  display:none;
  z-index:50;
  pointer-events:none;
}
.rfm-stage .rfm-minimap-viewport{
  position:absolute;
  border:2px solid rgba(31,78,121,0.9);
  background: rgba(31,78,121,0.08);
  border-radius:6px;
}


/* Frontend auth bar */
.rfm-authbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin:10px 0;padding:10px 12px;border-radius:14px;background:rgba(0,0,0,.06)}
.rfm-authbar-left{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rfm-authbar-title{font-weight:700}
.rfm-authbar-status{padding:2px 8px;border-radius:999px;font-size:12px}
.rfm-authbar-status.ok{background:rgba(25,135,84,.15)}
.rfm-authbar-status.no{background:rgba(220,53,69,.15)}
.rfm-authbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rfm-authbar-right input{height:34px;border-radius:10px;border:1px solid rgba(0,0,0,.15);padding:0 10px}
.rfm-auth-msg{font-size:12px;opacity:.8}
@media (max-width: 600px){
  .rfm-authbar{flex-direction:column;align-items:stretch}
  .rfm-authbar-right input{width:100%}
  .rfm-authbar-right .button{width:100%}
}

/* Frontend Drawer (Service/Manager actions) */
.rfm-fe-drawer-overlay{position:fixed;inset:0;z-index:999999;background:rgba(0,0,0,0.45);display:flex;align-items:flex-end;justify-content:center;padding:10px;}
.rfm-fe-drawer{width:min(720px,100%);max-height:85vh;background:#111;border:1px solid rgba(255,255,255,0.10);border-radius:18px;color:#fff;display:flex;flex-direction:column;overflow:hidden;}
.rfm-fe-drawer-hd{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,0.10);}
.rfm-fe-drawer-title{font-weight:800;font-size:15px;opacity:0.95}
.rfm-fe-drawer-close{background:transparent;border:0;color:rgba(255,255,255,0.8);font-size:18px;line-height:18px;padding:6px 8px;border-radius:10px;}
.rfm-fe-drawer-close:active{transform:translateY(1px)}
.rfm-fe-drawer-bd{padding:10px 12px;overflow:auto;}
.rfm-fe-drawer-ft{display:flex;gap:8px;justify-content:flex-end;padding:10px 12px;border-top:1px solid rgba(255,255,255,0.10);}

.rfm-fe-form{display:flex;flex-direction:column;gap:10px;}
.rfm-fe-row{display:flex;gap:10px;align-items:center;}
.rfm-fe-row label{width:110px;opacity:0.85;font-weight:700;font-size:13px;}
.rfm-fe-row input,.rfm-fe-row select{flex:1;height:38px;border-radius:12px;border:1px solid rgba(255,255,255,0.14);background:rgba(255,255,255,0.06);color:#fff;padding:0 10px;}
.rfm-fe-static{flex:1;opacity:0.95;font-weight:700}

.rfm-fe-tables{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:132px;overflow:auto;padding-right:2px;}
.rfm-fe-table-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:14px;border:1px solid rgba(255,255,255,0.10);background:rgba(255,255,255,0.04);}
.rfm-fe-table-item input{width:18px;height:18px;flex:0 0 auto;}
.rfm-fe-table-name{font-weight:800;}
.rfm-fe-table-cap{opacity:0.85;font-size:12px;}
.rfm-fe-table-badge{margin-left:auto;font-size:12px;opacity:0.8}
.rfm-fe-table-item.booked{opacity:0.55}

.rfm-fe-sep{height:1px;background:rgba(255,255,255,0.10);margin:2px 0;}
.rfm-fe-coords-title{font-weight:800;margin-bottom:6px;}
.rfm-fe-coords-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.rfm-fe-coords-grid label{display:block;font-size:12px;opacity:0.85;margin-bottom:4px;font-weight:700}
.rfm-fe-coords-grid input,.rfm-fe-coords-grid select{width:100%;height:36px;border-radius:12px;border:1px solid rgba(255,255,255,0.14);background:rgba(255,255,255,0.06);color:#fff;padding:0 10px;}
.rfm-fe-hint{font-size:12px;opacity:0.7;margin-top:6px;}

.rfm-fe-error{background:rgba(220,53,69,0.16);border:1px solid rgba(220,53,69,0.45);padding:8px 10px;border-radius:12px;}
.rfm-fe-ok{background:rgba(25,135,84,0.16);border:1px solid rgba(25,135,84,0.45);padding:8px 10px;border-radius:12px;}

@media (max-width: 520px){
  .rfm-fe-row{flex-direction:column;align-items:stretch;gap:6px;}
  .rfm-fe-row label{width:auto;}
  .rfm-fe-tables{grid-template-columns:1fr;max-height:110px;}
  .rfm-fe-drawer{border-radius:16px;}
}

/*
  Contrast / readability hardening for the frontend drawer.
  Some themes apply dark text colors to labels/inputs via highly-specific selectors.
  We intentionally add stronger selectors (and a few !important) here so the drawer
  is always readable on mobile.
*/
.rfm-fe-drawer,
.rfm-fe-drawer *{
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.rfm-fe-drawer label{ color:#cfd8dc !important; }
.rfm-fe-drawer .rfm-fe-drawer-title{ color:#ffffff; }
.rfm-fe-drawer input,
.rfm-fe-drawer select{
  color:#ffffff !important;
  background: rgba(255,255,255,0.06) !important;
  border-color: rgba(255,255,255,0.16) !important;
}
.rfm-fe-drawer input::placeholder{ color:#9aa4aa !important; }
.rfm-fe-drawer .rfm-fe-static{ color:#ffffff; }
.rfm-fe-drawer .rfm-fe-table-name,
.rfm-fe-drawer .rfm-fe-table-cap,
.rfm-fe-drawer .rfm-fe-table-badge{ color:rgba(255,255,255,0.92); }
.rfm-fe-drawer .rfm-fe-table-item.booked{ opacity:0.45; }



/* v1.10.46: Consistent table corners across Auto-Fit (transform: scale) and manual zoom
   Make tables eckiger and keep border-radius/border-width visually consistent regardless of zoom.
*/
:root{--rfm-table-radius:3px;--rfm-table-border:2px;}
.rfm-stage,.rfm-canvas,.rfm-room-canvas{--rfm-zoom:1;--rfm-zoom-inv:1;}
.rfm-table{border-radius:calc(var(--rfm-table-radius) * var(--rfm-zoom-inv, 1));border-width:calc(var(--rfm-table-border) * var(--rfm-zoom-inv, 1));}
.rfm-table.rfm-round{border-radius:999px;}
.rfm-table.selected{outline-width:calc(3px * var(--rfm-zoom-inv, 1));outline-offset:calc(2px * var(--rfm-zoom-inv, 1));}

.rfm-table .rfm-table-label *{max-width:100%;overflow:hidden;text-overflow:ellipsis;word-break:break-word;font-size:inherit;}
