/* ROP v2: standalone, TMP-scoped styles. */
.rop-v2 {
  --rop-accent: #3276b1;
  --rop-accent-hover: #28689e;
  --rop-on-accent: #ffffff;
  --rop-on-accent-hover: #ffffff;
  --rop-accent-text: #235880;
  --rop-soft: #f3f8fc;
  --rop-soft-strong: #e6f0f8;
  --rop-soft-hover: #d8eaf6;
  --rop-border: #cadde9;
  --rop-border-strong: #3276b1;
  --rop-line: #e0eaf2;
  --rop-text: #27323b;
  --rop-muted: #53616d;
  --rop-blue: var(--rop-accent);
  color: var(--rop-text);
  margin: 18px 0 34px;
}
.rop-v2, .rop-v2 * { box-sizing: border-box; }
.rop-v2-header { display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding-bottom:12px; margin-bottom:16px; border-bottom:3px solid var(--rop-blue); }
.rop-v2-header h2 { margin:0; font-size:24px; font-weight:700; }
.rop-v2-header .fa { color:var(--rop-blue); }
.rop-v2-preview { margin-left:auto; padding:5px 10px; color:#765013; background:#fff3d8; border:1px solid #e7d5ad; border-radius:20px; font-size:12px; font-weight:700; }
.rop-v2-congress-row { display:flex; flex-wrap:wrap; gap:12px; margin:14px 0 20px; }
.rop-v2-congress { width: min(100%, 260px); display:flex; gap:14px; align-items:center; padding:12px 14px; background:linear-gradient(110deg,var(--rop-accent),#fff); border:2px solid var(--rop-blue); border-radius:9px; box-shadow:0 2px 6px rgba(0,0,0,.05); }
.rop-v2-congress img { width:78px; height:52px; object-fit:contain; }
.rop-v2-congress strong { display:block; color:var(--rop-accent-text); font-size:16px; }
.rop-v2-congress small { display:block; color:var(--rop-muted); font-size:12px; }
.rop-v2-tabs { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin:18px 0; }
.rop-v2-tab { text-align:center; display:flex; justify-content:center; align-items:center; gap:9px; min-height:48px; padding:9px 7px; border:1px solid var(--rop-border); background:var(--rop-soft); border-radius:7px; color:var(--rop-accent-text); font-weight:600; font-size:14px; }
.rop-v2-tab.is-current { color:#fff; border-color:var(--rop-border-strong); background:linear-gradient(130deg,var(--rop-accent-hover),var(--rop-accent-hover)); }
.rop-v2-tab.is-locked { color:var(--rop-muted); border-color:var(--rop-line); background:var(--rop-soft); }
.rop-v2-message { padding:13px 16px; margin:14px 0 18px; border:1px solid var(--rop-border); border-radius:8px; background:var(--rop-soft); color:var(--rop-accent-text); line-height:1.5; }
.rop-v2-message.is-warning { border-color:#efd4a0; background:#fff8e8; color:#745318; }
.rop-v2-columns { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(250px,1fr); gap:16px; }
.rop-v2-panel { overflow:hidden; background:#fff; border:1px solid var(--rop-line); border-radius:9px; box-shadow:0 2px 9px rgba(0,0,0,.05); margin-bottom:16px; }
.rop-v2-panel h3 { margin:0; padding:12px 16px; color:#fff; background:linear-gradient(110deg,var(--rop-accent-hover),var(--rop-accent-hover)); font-size:17px; font-weight:650; }
.rop-v2-panel-body { padding:17px 18px; font-size:14px; line-height:1.7; }
.rop-v2-panel-body p:last-child { margin-bottom:0; }
.rop-v2-muted { color:var(--rop-muted); font-size:13px; }
.rop-v2-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.rop-v2-stat { background:var(--rop-soft); padding:13px; border-radius:7px; border:1px solid var(--rop-line); }
.rop-v2-stat strong { display:block; font-size:13px; color:var(--rop-accent-text); margin-bottom:3px; }
.rop-v2-stat span { font-size:13px; }
.rop-v2-back { margin:8px 0 0; }
.rop-v2-back a { color:var(--rop-blue); text-decoration:none; }
.rop-v2-back a:hover { text-decoration:underline; }
@media (max-width:900px){ .rop-v2-columns { grid-template-columns:1fr; } .rop-v2-tabs { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:590px){ .rop-v2-header h2 { font-size:21px; } .rop-v2-preview { margin-left:0; } .rop-v2-tabs { grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; } .rop-v2-tab { font-size:12px; min-height:50px; gap:5px; } .rop-v2-congress { width:100%; } .rop-v2-grid { grid-template-columns:1fr; } }

/* Phase 2: professional speaker details, scoped to the protected ROP. */
.rop-v2 .rop-v2-tab.is-open { text-decoration:none; color:var(--rop-accent-text); background:var(--rop-soft); border-color:var(--rop-border); }
.rop-v2 a.rop-v2-tab.is-open:hover, .rop-v2 a.rop-v2-tab.is-open:focus { border-color:var(--rop-border-strong); background:var(--rop-soft); color:var(--rop-accent-text); text-decoration:none; }
.rop-v2 a.rop-v2-tab.is-current { text-decoration:none; }
.rop-v2 a.rop-v2-tab.is-current:hover, .rop-v2 a.rop-v2-tab.is-current:focus { color:#fff; text-decoration:none; }
.rop-v2 .rop-v2-profile-panel { width:100%; }
.rop-v2 .rop-v2-profile-panel .rop-v2-panel-body { padding:22px 26px 25px; }
.rop-v2 .rop-v2-profile-panel .rop-v2-panel-body > p { margin-bottom:12px; }
.rop-v2 .rop-v2-profile-initial { padding:12px 15px; border-left:4px solid var(--rop-border-strong); background:var(--rop-soft); border-radius:5px; }
.rop-v2 .rop-v2-profile-form { margin-top:19px; }
.rop-v2 .rop-v2-profile-section-title { font-size:16px; font-weight:700; color:var(--rop-accent-text); padding:9px 0 8px; border-bottom:1px solid var(--rop-line); margin:18px 0 17px; }
.rop-v2 .rop-v2-profile-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px 22px; align-items:start; }
.rop-v2 .rop-v2-profile-field { min-width:0; }
.rop-v2 .rop-v2-profile-field label { display:block; font-size:13px; margin:0 0 5px; font-weight:600; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-profile-field label small { color:#7b8793; font-weight:400; margin-left:3px; }
.rop-v2 .rop-v2-profile-field input.form-control,
.rop-v2 .rop-v2-profile-field select.form-control { display:block; width:100%; max-width:100%; min-width:0; font-size:14px; height:39px; padding:8px 11px; border-radius:6px; border:1px solid var(--rop-border); color:var(--rop-accent-text); background:#fff; box-shadow:none; font-weight:500; }
.rop-v2 .rop-v2-profile-field input.form-control:focus,
.rop-v2 .rop-v2-profile-field select.form-control:focus { outline:2px solid color-mix(in srgb, var(--rop-accent) 20%, transparent); border-color:var(--rop-border-strong); }
.rop-v2 .rop-v2-profile-field.is-readonly input.form-control { background:var(--rop-soft); border-color:var(--rop-line); color:var(--rop-muted); cursor:default; }
.rop-v2 .rop-v2-profile-field.is-invalid input.form-control,
.rop-v2 .rop-v2-profile-field.is-invalid select.form-control { border-color:#c43737; }
.rop-v2 .rop-v2-field-error { color:#af2424; font-size:12px; display:block; margin-top:5px; }
.rop-v2 .rop-v2-profile-actions { display:flex; justify-content:flex-end; padding:21px 0 2px; }
.rop-v2 .rop-v2-profile-actions button { border-radius:6px; padding:10px 19px; background:var(--rop-accent); border-color:var(--rop-border-strong); font-size:14px; font-weight:600; }
.rop-v2 .rop-v2-profile-actions button:hover { background:var(--rop-accent); border-color:var(--rop-border-strong); }
.rop-v2 .rop-v2-message.is-error { background:#fff0ef; border-color:#ecc2bc; color:#8f2525; }
.rop-v2 .rop-v2-message.is-success { background:#eaf6ef; border-color:#b5dbc5; color:#236043; }
@media (max-width:760px) {
  .rop-v2 .rop-v2-profile-panel .rop-v2-panel-body { padding:16px 15px 18px; }
  .rop-v2 .rop-v2-profile-grid { grid-template-columns:1fr; gap:12px; }
  .rop-v2 .rop-v2-profile-actions { justify-content:stretch; }
  .rop-v2 .rop-v2-profile-actions button { width:100%; }
}

/* Phase 3a: read-only personal assignments. No changes to TMP core styles. */
.rop-v2 .rop-v2-assignments-panel .rop-v2-panel-body { padding:17px 20px 22px; }
.rop-v2 .rop-v2-assignment-filter { display:flex; gap:8px; flex-wrap:wrap; margin:15px 0 20px; }
.rop-v2 .rop-v2-assignment-filter a { display:inline-block; padding:8px 15px; border:1px solid var(--rop-border); border-radius:20px; background:var(--rop-soft); color:var(--rop-accent-text); text-decoration:none; font-weight:600; }
.rop-v2 .rop-v2-assignment-filter a:hover { background:var(--rop-soft); text-decoration:none; }
.rop-v2 .rop-v2-assignment-filter a.is-active { background:var(--rop-accent); border-color:var(--rop-border-strong); color:#fff; }
.rop-v2 .rop-v2-assignment-session { border:1px solid var(--rop-line); border-radius:9px; margin-bottom:15px; overflow:hidden; }
.rop-v2 .rop-v2-assignment-session-head { display:flex; gap:16px; align-items:center; padding:13px 15px; background:var(--rop-soft); }
.rop-v2 .rop-v2-assignment-time { width:124px; flex:0 0 124px; color:var(--rop-accent-text); font-size:13px; }
.rop-v2 .rop-v2-assignment-time strong, .rop-v2 .rop-v2-assignment-time span { display:block; }
.rop-v2 .rop-v2-assignment-session-info { min-width:0; display:flex; flex-direction:column; }
.rop-v2 .rop-v2-assignment-session-info small { color:var(--rop-muted); font-weight:600; }
.rop-v2 .rop-v2-assignment-session-info strong { font-size:15px; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-assignment-items { padding:6px 15px; }
.rop-v2 .rop-v2-assignment-item { padding:11px 0; display:flex; justify-content:space-between; align-items:flex-start; gap:10px; border-bottom:1px solid var(--rop-line); }
.rop-v2 .rop-v2-assignment-item:last-child { border-bottom:none; }
.rop-v2 .rop-v2-assignment-item-main { display:flex; flex-direction:column; min-width:0; gap:2px; overflow-wrap:anywhere; }
.rop-v2 .rop-v2-assignment-item-main strong { color:var(--rop-accent-text); font-size:14px; }
.rop-v2 .rop-v2-assignment-item-main small { color:#5c6772; }
.rop-v2 .rop-v2-assignment-kind { font-size:12px; font-weight:700; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-assignment-status { flex-shrink:0; font-size:12px; font-weight:700; border-radius:14px; padding:3px 10px; }
.rop-v2 .rop-v2-assignment-status.is-accepted { background:#e5f4e9; color:#236b3d; }
.rop-v2 .rop-v2-assignment-status.is-declined { background:#fdecea; color:#983727; }
.rop-v2 .rop-v2-assignment-status.is-pending { background:#fff3d9; color:#845a18; }
.rop-v2 .rop-v2-assignment-footnote { border-top:1px solid var(--rop-line); margin-top:20px; padding-top:12px; }
@media(max-width:650px) {
  .rop-v2 .rop-v2-assignment-session-head { align-items:flex-start; gap:7px; flex-direction:column; }
  .rop-v2 .rop-v2-assignment-time { flex:none; width:auto; display:flex; gap:8px; }
  .rop-v2 .rop-v2-assignment-item { flex-direction:column; }
  .rop-v2 .rop-v2-assignment-status { align-self:flex-start; }
}

/* Phase 3b: direct assignment replies and one-time COI declarations. */
.rop-v2 .rop-v2-assignment-item { display:block; }
.rop-v2 .rop-v2-assignment-item-heading { display:flex; align-items:flex-start; gap:14px; justify-content:space-between; }
.rop-v2 .rop-v2-assignment-form { margin:12px 0 2px; border:1px solid var(--rop-line); border-radius:8px; padding:13px 15px; background:var(--rop-soft); }
.rop-v2 .rop-v2-choice-row { display:flex; flex-wrap:wrap; align-items:center; gap:20px; margin-bottom:9px; }
.rop-v2 .rop-v2-choice-row label { display:inline-flex; align-items:center; gap:7px; margin:0; cursor:pointer; font-weight:600; }
.rop-v2 .rop-v2-assignment-field { display:block; margin:8px 0 11px; font-size:13px; font-weight:600; }
.rop-v2 .rop-v2-assignment-field span { display:block; margin-bottom:4px; }
.rop-v2 .rop-v2-assignment-field .form-control { width:100%; height:38px; border:1px solid var(--rop-border); border-radius:6px; box-shadow:none; padding:8px 10px; }
.rop-v2 .rop-v2-assignment-field .form-control:focus { border-color:var(--rop-border-strong); outline:2px solid color-mix(in srgb, var(--rop-accent) 24%, transparent); }
.rop-v2 .rop-v2-action-save { border-radius:6px; padding:8px 15px; background:var(--rop-accent); border-color:var(--rop-border-strong); font-weight:600; font-size:13px; }
.rop-v2 .rop-v2-action-save:hover { background:var(--rop-accent); border-color:var(--rop-border-strong); }
.rop-v2 .rop-v2-irreversible { display:block; margin-top:10px; color:#8a5c18; font-size:12px; line-height:1.5; }
.rop-v2 .rop-v2-assignment-lock { margin:8px 0 0; }
.rop-v2 .rop-v2-coi-section { border:1px solid var(--rop-line); background:var(--rop-soft); border-radius:8px; padding:13px 15px; margin-top:11px; }
.rop-v2 .rop-v2-coi-section h4 { font-size:14px; font-weight:700; margin:0 0 9px; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-coi-section p { margin:5px 0 12px; }
.rop-v2 .rop-v2-coi-forms { display:grid; grid-template-columns:minmax(190px, .7fr) minmax(280px, 1.3fr); gap:14px; }
.rop-v2 .rop-v2-coi-none, .rop-v2 .rop-v2-coi-yes { border:1px solid var(--rop-line); border-radius:8px; padding:13px; min-width:0; background:white; }
.rop-v2 .rop-v2-coi-none button { white-space:normal; font-size:13px; }
.rop-v2 .rop-v2-coi-yes > strong { color:var(--rop-accent-text); display:block; margin-bottom:9px; }
.rop-v2 .rop-v2-coi-options { display:flex; flex-direction:column; gap:6px; }
.rop-v2 .rop-v2-coi-options label { display:flex; gap:8px; align-items:flex-start; font-weight:500; margin:0; cursor:pointer; }
.rop-v2 .rop-v2-coi-options input { margin-top:4px; }
/* The TMP theme hides native checkboxes. Restore visible, clickable COI choices. */
.rop-v2 .rop-v2-coi-options input[type="checkbox"] {
  display:inline-block !important;
  visibility:visible !important;
  opacity:1 !important;
  position:static !important;
  -webkit-appearance:checkbox !important;
  appearance:checkbox !important;
  width:18px !important;
  height:18px !important;
  min-width:18px !important;
  margin:1px 0 0 !important;
  padding:0 !important;
  clip:auto !important;
  clip-path:none !important;
  transform:none !important;
  pointer-events:auto !important;
  flex:0 0 18px;
  cursor:pointer;
  accent-color:var(--rop-accent);
}
.rop-v2 .rop-v2-coi-options input[type="checkbox"]:focus-visible {
  outline:2px solid var(--rop-border-strong);
  outline-offset:2px;
}
.rop-v2 .rop-v2-coi-saved { background:#edf7f0; border-radius:6px; padding:9px 11px; color:#276140; }
.rop-v2 .rop-v2-coi-saved i { margin-right:5px; }
@media (max-width:760px) {
  .rop-v2 .rop-v2-coi-forms { grid-template-columns:1fr; }
  .rop-v2 .rop-v2-action-save { width:100%; }
}
@media (max-width:480px) {
  .rop-v2 .rop-v2-assignment-item-heading { flex-direction:column; gap:6px; }
  .rop-v2 .rop-v2-assignment-form, .rop-v2 .rop-v2-coi-section { padding:12px; }
  .rop-v2 .rop-v2-coi-none button { width:100%; }
}

/* Speaker-oriented overview: actions and live assignment summary. */
.rop-v2 .rop-v2-overview-panel .rop-v2-panel-body { padding:17px 18px 20px; }
.rop-v2 .rop-v2-overview-panel .rop-v2-panel-body > p:first-child { margin-top:0; }
.rop-v2 .rop-v2-overview-actions { display:grid; gap:10px; margin:16px 0; }
.rop-v2 .rop-v2-overview-action { display:flex; align-items:flex-start; gap:12px; padding:13px 14px; border:1px solid var(--rop-line); border-radius:8px; background:var(--rop-soft); color:var(--rop-accent-text); text-decoration:none; }
.rop-v2 .rop-v2-overview-action > i { margin-top:4px; color:var(--rop-accent-text); font-size:17px; flex:0 0 20px; }
.rop-v2 .rop-v2-overview-action span { min-width:0; }
.rop-v2 .rop-v2-overview-action strong { display:block; font-size:14px; margin-bottom:2px; }
.rop-v2 .rop-v2-overview-action small { display:block; color:var(--rop-muted); line-height:1.55; font-size:13px; }
.rop-v2 a.rop-v2-overview-action:hover, .rop-v2 a.rop-v2-overview-action:focus { color:var(--rop-accent-text); background:var(--rop-soft); border-color:var(--rop-border-strong); text-decoration:none; }
.rop-v2 .rop-v2-overview-confirmed { color:#24623e; font-weight:600; margin:0 0 15px; }
.rop-v2 .rop-v2-overview-confirmed i { margin-right:5px; }
.rop-v2 .rop-v2-overview-stats .rop-v2-stat span { display:block; font-size:20px; font-weight:700; color:var(--rop-accent-text); line-height:1.3; }
.rop-v2 .rop-v2-overview-note { margin-top:12px; }
.rop-v2 .rop-v2-overview-location { padding-top:12px; margin:17px 0 0; border-top:1px solid var(--rop-line); }
.rop-v2 .rop-v2-overview-location strong, .rop-v2 .rop-v2-overview-location span { display:block; }
.rop-v2 .rop-v2-overview-location strong { color:var(--rop-accent-text); font-size:13px; }
.rop-v2 .rop-v2-overview-website { border-top:1px solid var(--rop-line); padding-top:13px; margin-top:17px; }
.rop-v2 .rop-v2-overview-website a { color:var(--rop-accent-text); font-weight:600; }
.rop-v2 .rop-v2-overview-website small { color:var(--rop-muted); font-size:13px; }
@media (max-width:590px) { .rop-v2 .rop-v2-overview-panel .rop-v2-panel-body { padding:15px; } }

/* Phase 4a: hotel details, two-stage review and final booking response. */
.rop-v2 [hidden] { display:none !important; }
.rop-v2 .rop-v2-hotel-panel .rop-v2-panel-body { padding:18px 21px 23px; }
.rop-v2 .rop-v2-hotel-top { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:15px; margin-bottom:18px; }
.rop-v2 .rop-v2-hotel-info { min-width:0; border:1px solid var(--rop-line); border-radius:9px; padding:15px 18px; background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-info h4 { margin:0 0 12px; font-size:15px; font-weight:700; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-hotel-info h4 i { margin-right:8px; }
.rop-v2 .rop-v2-hotel-info p { font-size:13px; line-height:1.6; margin:7px 0 0; }
.rop-v2 .rop-v2-hotel-info .rop-v2-hotel-dates { font-size:17px; font-weight:700; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-hotel-name { display:block; margin-bottom:8px; font-size:16px; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-hotel-address { font-style:normal; margin:0; color:var(--rop-muted); }
.rop-v2 .rop-v2-hotel-address span { display:block; }
.rop-v2 .rop-v2-hotel-input,
.rop-v2 .rop-v2-hotel-review { border-top:1px solid var(--rop-line); padding-top:16px; }
.rop-v2 .rop-v2-hotel-input h4,
.rop-v2 .rop-v2-hotel-review h4 { font-size:17px; font-weight:700; margin:0 0 16px; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-hotel-choice,
.rop-v2 .rop-v2-hotel-room { margin:0 0 15px; padding:0; border:0; }
.rop-v2 .rop-v2-hotel-choice legend,
.rop-v2 .rop-v2-hotel-room legend { float:none; border:0; width:auto; padding:0; margin:0 0 8px; color:var(--rop-accent-text); font-weight:700; font-size:14px; }
.rop-v2 .rop-v2-hotel-choice label,
.rop-v2 .rop-v2-hotel-room label,
.rop-v2 .rop-v2-hotel-checks label { display:inline-flex; align-items:flex-start; gap:7px; font-weight:500; margin:2px 20px 9px 0; cursor:pointer; }
.rop-v2 .rop-v2-hotel-choice input,
.rop-v2 .rop-v2-hotel-room input,
.rop-v2 .rop-v2-hotel-checks input { margin:4px 0 0; }
.rop-v2 .rop-v2-hotel-dates-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; margin:13px 0 19px; }
.rop-v2 .rop-v2-hotel-checks { display:flex; flex-wrap:wrap; gap:0 10px; margin-bottom:15px; }
/* TMP stylesheet hides native checkboxes; keep these two hotel options visibly interactive. */
.rop-v2 .rop-v2-hotel-checks label { display:inline-flex; align-items:center; gap:9px; }
.rop-v2 .rop-v2-hotel-checks input.rop-v2-hotel-native-check[type="checkbox"] {
  display:inline-block !important;
  visibility:visible !important;
  opacity:1 !important;
  position:static !important;
  -webkit-appearance:checkbox !important;
  appearance:checkbox !important;
  width:18px !important;
  height:18px !important;
  min-width:18px !important;
  margin:0 !important;
  padding:0 !important;
  clip:auto !important;
  clip-path:none !important;
  transform:none !important;
  pointer-events:auto !important;
  flex:0 0 18px;
  cursor:pointer;
  accent-color:var(--rop-accent);
}

.rop-v2 .rop-v2-hotel-input textarea.form-control { display:block; width:100%; max-width:100%; min-height:85px; padding:10px 12px; border-radius:6px; border:1px solid var(--rop-border); box-shadow:none; resize:vertical; }
.rop-v2 .rop-v2-hotel-submit { display:flex; justify-content:flex-end; margin-top:14px; }
.rop-v2 .rop-v2-hotel-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; margin:16px 0; }
.rop-v2 .rop-v2-hotel-summary > div { margin:0; padding:13px 14px; background:var(--rop-soft); border:1px solid var(--rop-line); border-radius:8px; min-width:0; }
.rop-v2 .rop-v2-hotel-summary .rop-v2-hotel-summary-wide { grid-column:1/-1; }
.rop-v2 .rop-v2-hotel-summary dt { color:var(--rop-muted); font-size:12px; font-weight:700; margin:0 0 5px; }
.rop-v2 .rop-v2-hotel-summary dd { color:var(--rop-accent-text); font-size:15px; margin:0; overflow-wrap:anywhere; }
.rop-v2 .rop-v2-hotel-review-actions { display:flex; gap:12px; justify-content:flex-end; flex-wrap:wrap; margin-top:17px; }
.rop-v2 .rop-v2-hotel-review-actions form { margin:0; }
.rop-v2 .rop-v2-hotel-review-actions .btn { padding:9px 14px; border-radius:6px; }
.rop-v2 .rop-v2-hotel-result .rop-v2-message { margin-bottom:14px; }
@media (max-width:760px) {
  .rop-v2 .rop-v2-hotel-panel .rop-v2-panel-body { padding:15px; }
  .rop-v2 .rop-v2-hotel-dates-grid { grid-template-columns:1fr; gap:10px; }
  .rop-v2 .rop-v2-hotel-review-actions { justify-content:stretch; }
  .rop-v2 .rop-v2-hotel-review-actions form, .rop-v2 .rop-v2-hotel-review-actions button { width:100%; }
  .rop-v2 .rop-v2-hotel-submit .btn { width:100%; }
}
@media (max-width:460px) {
  .rop-v2 .rop-v2-hotel-top { grid-template-columns:1fr; }
  .rop-v2 .rop-v2-hotel-summary { grid-template-columns:1fr; }
  .rop-v2 .rop-v2-hotel-choice label,
  .rop-v2 .rop-v2-hotel-room label { margin-right:16px; }
}

/* ROP v2 / Hotel: accessible two-click calendar and live price breakdown. */
.rop-v2 .rop-v2-hotel-planner { margin:14px 0 20px; }
.rop-v2 .rop-v2-hotel-booking-grid {
  display:grid;
  grid-template-columns:minmax(295px,1.15fr) minmax(245px,0.85fr);
  gap:18px;
  align-items:stretch;
}
.rop-v2 .rop-v2-hotel-calendar-card,
.rop-v2 .rop-v2-hotel-cost-card {
  min-width:0;
  padding:18px;
  border:1px solid var(--rop-line);
  border-radius:12px;
  background:#fff;
  box-shadow:0 2px 8px rgba(31,65,96,.045);
}
.rop-v2 .rop-v2-hotel-cost-card { background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-calendar-card h5,
.rop-v2 .rop-v2-hotel-cost-card h5 {
  display:flex; align-items:center; gap:9px;
  font-size:16px; font-weight:700; margin:0 0 7px;
  color:var(--rop-accent-text);
}
.rop-v2 .rop-v2-hotel-calendar-hint,
.rop-v2 .rop-v2-hotel-cost-hint {
  margin:0 0 14px;
  color:var(--rop-muted); font-size:13px; line-height:1.55;
}
.rop-v2 .rop-v2-hotel-selected-dates {
  display:grid; grid-template-columns:1fr 1fr; gap:9px; margin:13px 0 15px;
}
.rop-v2 .rop-v2-hotel-selected-dates > div {
  display:flex; flex-direction:column; gap:5px; background:var(--rop-soft);
  border:1px solid var(--rop-line); padding:10px 12px; border-radius:9px;
  min-width:0;
}
.rop-v2 .rop-v2-hotel-selected-dates span { color:var(--rop-muted); font-size:12px; }
.rop-v2 .rop-v2-hotel-selected-dates strong {
  color:var(--rop-accent-text); font-size:15px; font-weight:700; font-variant-numeric:tabular-nums;
}
.rop-v2 .rop-v2-hotel-month-bar {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-top:1px solid var(--rop-line); padding-top:13px; margin-bottom:9px;
  color:var(--rop-accent-text); font-size:15px; text-align:center;
}
.rop-v2 .rop-v2-hotel-month-bar > strong { font-size:16px; flex:1; }
.rop-v2 .rop-v2-hotel-month-nav {
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--rop-line); border-radius:50%; background:#fff;
  width:33px; height:33px; font-size:17px; color:var(--rop-accent-text); padding:0;
  cursor:pointer; box-shadow:none;
}
.rop-v2 .rop-v2-hotel-month-nav:hover:not(:disabled) { background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-month-nav:disabled { color:#aab8c5; opacity:.45; cursor:default; }
.rop-v2 .rop-v2-hotel-weekdays,
.rop-v2 .rop-v2-hotel-day-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; }
.rop-v2 .rop-v2-hotel-weekdays span { padding:5px 0 7px; text-align:center; color:var(--rop-muted); font-size:12px; }
.rop-v2 .rop-v2-hotel-day {
  font:inherit; display:flex; justify-content:center; align-items:center;
  padding:0; margin:0; border:0; border-radius:50%;
  width:min(100%,40px); height:40px; justify-self:center;
  background:transparent; color:var(--rop-accent-text); font-size:14px;
  cursor:pointer; transition:background .12s,color .12s;
  font-variant-numeric:tabular-nums;
}
.rop-v2 .rop-v2-hotel-day:disabled { color:#c4cdd8; cursor:default; }
.rop-v2 .rop-v2-hotel-day:hover:not(:disabled) { background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-day.is-between { background:var(--rop-soft); color:var(--rop-accent-text); border-radius:5px; }
.rop-v2 .rop-v2-hotel-day.is-start,
.rop-v2 .rop-v2-hotel-day.is-end,
.rop-v2 .rop-v2-hotel-day.is-start:hover,
.rop-v2 .rop-v2-hotel-day.is-end:hover { background:var(--rop-accent); color:#fff; border-radius:50%; font-weight:700; }
.rop-v2 .rop-v2-hotel-day:focus-visible,
.rop-v2 .rop-v2-hotel-shortcut:focus-visible,
.rop-v2 .rop-v2-hotel-clear:focus-visible,
.rop-v2 .rop-v2-hotel-month-nav:focus-visible { outline:3px solid var(--rop-border-strong); outline-offset:2px; }
.rop-v2 .rop-v2-hotel-calendar-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:15px; }
.rop-v2 .rop-v2-hotel-shortcut,
.rop-v2 .rop-v2-hotel-clear {
  padding:7px 13px; min-height:36px; border-radius:19px;
  font-size:13px; font-weight:600; cursor:pointer;
  background:var(--rop-soft); border:1px solid var(--rop-border); color:var(--rop-accent-text);
}
.rop-v2 .rop-v2-hotel-clear { background:#fff; border-color:var(--rop-line); color:var(--rop-muted); }
.rop-v2 .rop-v2-hotel-shortcut:hover { background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-clear:hover { background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-calendar-status { margin:11px 0 0; min-height:20px; font-size:13px; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-hotel-cost-lines { margin:15px 0 0; }
.rop-v2 .rop-v2-hotel-cost-lines > div:not(.rop-v2-hotel-cost-msg) {
  display:flex; align-items:flex-start; justify-content:space-between; gap:14px;
  padding:11px 0; border-bottom:1px solid var(--rop-line);
}
.rop-v2 .rop-v2-hotel-cost-lines dt,
.rop-v2 .rop-v2-hotel-cost-lines dd { margin:0; font-size:13px; line-height:1.5; }
.rop-v2 .rop-v2-hotel-cost-lines dt { color:var(--rop-muted); font-weight:500; }
.rop-v2 .rop-v2-hotel-cost-lines dd { color:var(--rop-accent-text); text-align:right; font-weight:700; font-variant-numeric:tabular-nums; }
.rop-v2 .rop-v2-hotel-cost-lines > .rop-v2-hotel-cost-total {
  background:var(--rop-soft); margin:13px -9px 0; padding:13px 9px;
  border:1px solid var(--rop-line); border-radius:8px;
}
.rop-v2 .rop-v2-hotel-cost-total dt,
.rop-v2 .rop-v2-hotel-cost-total dd { color:var(--rop-accent-text); font-size:15px; font-weight:700; }
.rop-v2 .rop-v2-hotel-cost-msg { padding:13px 0; font-size:13px; line-height:1.6; color:var(--rop-muted); }
.rop-v2 .rop-v2-hotel-cost-disclaimer { margin:15px 0 0; color:var(--rop-muted); font-size:12px; line-height:1.6; }
.rop-v2 .rop-v2-hotel-submit button:disabled { opacity:.6; cursor:not-allowed; }
@media (max-width:900px) {
  .rop-v2 .rop-v2-hotel-booking-grid { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; }
  .rop-v2 .rop-v2-hotel-calendar-card, .rop-v2 .rop-v2-hotel-cost-card { padding:15px; }
}
@media (max-width:680px) {
  .rop-v2 .rop-v2-hotel-booking-grid { grid-template-columns:1fr; }
  .rop-v2 .rop-v2-hotel-calendar-card { max-width:none; }
  .rop-v2 .rop-v2-hotel-calendar-card, .rop-v2 .rop-v2-hotel-cost-card { padding:15px; }
  .rop-v2 .rop-v2-hotel-day { height:42px; }
}
@media (max-width:380px) {
  .rop-v2 .rop-v2-hotel-selected-dates { grid-template-columns:1fr 1fr; gap:6px; }
  .rop-v2 .rop-v2-hotel-selected-dates > div { padding:9px 8px; }
  .rop-v2 .rop-v2-hotel-selected-dates strong { font-size:13px; }
  .rop-v2 .rop-v2-hotel-day { height:36px; font-size:13px; }
  .rop-v2 .rop-v2-hotel-weekdays, .rop-v2 .rop-v2-hotel-day-grid { gap:1px; }
}

/* Phase 4a extension: privacy-respecting navigation, local QR and calendar export. */
.rop-v2 .rop-v2-hotel-service-actions {
  display:flex; flex-wrap:wrap; align-items:center; gap:9px; margin-top:12px;
}
.rop-v2 .rop-v2-hotel-service-btn {
  display:inline-flex; gap:8px; align-items:center; justify-content:center;
  min-height:37px; padding:8px 13px; background:var(--rop-soft); color:var(--rop-accent-text);
  border:1px solid var(--rop-border); border-radius:8px; cursor:pointer;
  font-size:13px; font-weight:650; line-height:1.3; text-align:center;
}
.rop-v2 .rop-v2-hotel-service-btn:hover { background:var(--rop-soft-strong); border-color:var(--rop-border-strong); }
.rop-v2 .rop-v2-hotel-service-btn.is-secondary { background:#fff; }
.rop-v2 .rop-v2-hotel-service-btn.is-secondary:hover { background:var(--rop-soft); }
.rop-v2 .rop-v2-hotel-service-btn:focus-visible,
.rop-v2 .rop-v2-hotel-provider-list button:focus-visible,
.rop-v2 .rop-v2-hotel-service-confirm-actions a:focus-visible {
  outline:3px solid var(--rop-border-strong); outline-offset:2px;
}
.rop-v2 .rop-v2-hotel-calendar-export {
  display:flex; flex-direction:column; align-items:flex-start; gap:7px; margin-top:18px;
  padding-top:15px; border-top:1px solid var(--rop-line);
}
.rop-v2 .rop-v2-hotel-calendar-export small { color:var(--rop-muted); font-size:12px; line-height:1.45; }
.rop-v2 .rop-v2-hotel-service-modal[hidden],
.rop-v2 .rop-v2-hotel-service-modal [hidden] { display:none !important; }
.rop-v2 .rop-v2-hotel-service-modal {
  position:fixed; inset:0; z-index:10550; display:flex; align-items:center;
  justify-content:center; padding:15px;
}
.rop-v2 .rop-v2-hotel-service-overlay {
  position:absolute; inset:0; background:rgba(12,32,54,.58);
}
.rop-v2 .rop-v2-hotel-service-dialog {
  position:relative; max-height:min(88vh,800px); overflow-y:auto;
  width:min(100%,530px); background:#fff; border-radius:14px;
  border:1px solid var(--rop-border); box-shadow:0 18px 45px rgba(0,0,0,.25);
  padding:23px 26px 25px; color:var(--rop-accent-text);
}
.rop-v2 .rop-v2-hotel-service-dialog h4 {
  color:var(--rop-accent-text); margin:2px 37px 9px 0; font-size:19px; font-weight:700;
}
.rop-v2 .rop-v2-hotel-service-dialog > p { font-size:14px; line-height:1.55; margin:0 0 15px; }
.rop-v2 .rop-v2-hotel-service-close {
  position:absolute; right:15px; top:14px; width:34px; height:34px;
  border:1px solid var(--rop-line); border-radius:50%; background:var(--rop-soft);
  font-size:22px; line-height:28px; cursor:pointer; color:var(--rop-accent-text);
}
.rop-v2 .rop-v2-hotel-provider-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.rop-v2 .rop-v2-hotel-provider-list button {
  display:flex; align-items:center; gap:10px; min-height:49px; padding:11px 13px;
  background:var(--rop-soft); color:var(--rop-accent-text); border:1px solid var(--rop-line);
  border-radius:9px; text-align:left; cursor:pointer; font-size:14px; font-weight:600;
}
.rop-v2 .rop-v2-hotel-provider-list button:hover { background:var(--rop-soft); border-color:var(--rop-border-strong); }
.rop-v2 .rop-v2-hotel-provider-list button i { width:20px; text-align:center; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-hotel-service-privacy {
  background:var(--rop-soft); border:1px solid var(--rop-line); border-left:4px solid var(--rop-border-strong);
  border-radius:7px; color:var(--rop-accent-text); padding:12px 14px; font-size:13px;
  line-height:1.6; margin:9px 0 16px;
}
.rop-v2 .rop-v2-hotel-service-confirm-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:10px; align-items:center; }
.rop-v2 .rop-v2-hotel-service-confirm-actions button,
.rop-v2 .rop-v2-hotel-service-qr-view button,
.rop-v2 [data-rop-hotel-back] {
  background:#fff; border:1px solid var(--rop-line); color:var(--rop-accent-text);
  border-radius:7px; min-height:40px; padding:9px 13px; cursor:pointer;
  font-size:13px; font-weight:600;
}
.rop-v2 .rop-v2-hotel-service-primary {
  display:inline-flex; justify-content:center; align-items:center; text-align:center;
  min-height:40px; padding:10px 14px; background:var(--rop-accent); border-radius:7px;
  color:#fff !important; text-decoration:none !important; font-size:13px; font-weight:650;
}
.rop-v2 .rop-v2-hotel-service-primary:hover { background:var(--rop-accent); color:#fff !important; }
.rop-v2 #rop-v2-hotel-service-qr-view { text-align:center; }
.rop-v2 #rop-v2-hotel-service-qr-image {
  background:#fff; border:1px solid var(--rop-line); border-radius:10px;
  display:inline-flex; justify-content:center; align-items:center;
  margin:6px auto 10px; padding:10px; max-width:100%;
}
.rop-v2 #rop-v2-hotel-service-qr-image svg { width:min(100%,270px); height:auto; display:block; }
.rop-v2 #rop-v2-hotel-service-qr-view p { text-align:left; }
@media(max-width:560px) {
  .rop-v2 .rop-v2-hotel-provider-list { grid-template-columns:1fr; }
  .rop-v2 .rop-v2-hotel-service-dialog { padding:20px 16px 21px; }
  .rop-v2 .rop-v2-hotel-service-dialog h4 { font-size:17px; }
  .rop-v2 .rop-v2-hotel-service-confirm-actions { justify-content:stretch; }
  .rop-v2 .rop-v2-hotel-service-confirm-actions > * { width:100%; }
}

/* Personal timetable: chronological programme with printable and mobile views. */
.rop-v2 .rop-v2-timetable-panel .rop-v2-panel-body { padding:20px 22px 24px; }
.rop-v2 .rop-v2-timetable-intro { margin:0 0 17px; color:var(--rop-muted); }
.rop-v2 .rop-v2-timetable-toolbar,
.rop-v2 .rop-v2-timetable-filters { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:14px; }
.rop-v2 .rop-v2-timetable-toolbar { padding-bottom:17px; border-bottom:1px solid var(--rop-line); }
.rop-v2 .rop-v2-timetable-views,
.rop-v2 .rop-v2-timetable-tools { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.rop-v2 .rop-v2-timetable-views a,
.rop-v2 .rop-v2-timetable-tool,
.rop-v2 .rop-v2-timetable-filter-go { display:inline-flex; gap:7px; align-items:center; justify-content:center; min-height:39px; padding:9px 13px; font-size:13px; line-height:1.35; font-weight:650; border-radius:7px; text-decoration:none; cursor:pointer; }
.rop-v2 .rop-v2-timetable-views a { border:1px solid var(--rop-border); color:var(--rop-accent-text); background:var(--rop-soft); }
.rop-v2 .rop-v2-timetable-views a:hover,
.rop-v2 .rop-v2-timetable-views a:focus { color:var(--rop-accent-text); text-decoration:none; background:var(--rop-soft); }
.rop-v2 .rop-v2-timetable-views a.is-active { color:#fff; border-color:var(--rop-border-strong); background:var(--rop-accent); }
.rop-v2 .rop-v2-timetable-tool { border:1px solid var(--rop-border); color:var(--rop-accent-text); background:white; }
.rop-v2 .rop-v2-timetable-tool:hover:not(:disabled) { background:var(--rop-soft); }
.rop-v2 .rop-v2-timetable-tool:disabled { cursor:not-allowed; opacity:.48; }
.rop-v2 .rop-v2-timetable-filters { padding:15px 0; }
.rop-v2 .rop-v2-timetable-day-form { margin:0; display:flex; flex-wrap:wrap; align-items:center; gap:9px; }
.rop-v2 .rop-v2-timetable-day-form label { margin:0; color:var(--rop-accent-text); font-size:13px; font-weight:700; }
.rop-v2 .rop-v2-timetable-day-form select { width:auto; max-width:100%; min-width:185px; height:39px; padding:6px 28px 6px 11px; border-radius:7px; box-shadow:none; }
.rop-v2 .rop-v2-timetable-filter-go { border:1px solid var(--rop-border-strong); color:#fff; background:var(--rop-accent); }
.rop-v2 .rop-v2-timetable-filter-go:hover { background:var(--rop-accent); }
.rop-v2 .rop-v2-timetable-count { display:inline-flex; align-items:center; gap:6px; color:#267746; font-size:13px; font-weight:700; }
.rop-v2 .rop-v2-timetable-day { margin:6px 0 22px; }
.rop-v2 .rop-v2-timetable-day > h4 { display:flex; gap:9px; align-items:center; color:var(--rop-accent-text); background:var(--rop-soft); border-radius:8px; padding:12px 14px; margin:0 0 12px; font-size:16px; font-weight:700; }
.rop-v2 .rop-v2-timetable-day-items { display:grid; gap:13px; }
.rop-v2 .rop-v2-timetable-session { background:#fff; border:1px solid var(--rop-line); border-left:4px solid var(--rop-border); border-radius:9px; overflow:hidden; }
.rop-v2 .rop-v2-timetable-session.is-mine { border-left-color:var(--rop-border-strong); }
.rop-v2 .rop-v2-timetable-session-head { display:grid; grid-template-columns:98px minmax(0,1fr); min-height:105px; }
.rop-v2 .rop-v2-timetable-time { padding:18px 8px; background:var(--rop-soft); border-right:1px solid var(--rop-line); text-align:center; font-variant-numeric:tabular-nums; }
.rop-v2 .rop-v2-timetable-time strong { display:block; color:var(--rop-accent-text); font-size:17px; line-height:1.3; }
.rop-v2 .rop-v2-timetable-time span { display:block; color:var(--rop-muted); font-size:13px; margin-top:6px; }
.rop-v2 .rop-v2-timetable-session-body { padding:14px 17px; min-width:0; }
.rop-v2 .rop-v2-timetable-session-top,
.rop-v2 .rop-v2-timetable-talk-head { display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px; }
.rop-v2 .rop-v2-timetable-kind,
.rop-v2 .rop-v2-timetable-talk-head small { color:var(--rop-accent-text); font-size:12px; font-weight:700; }
.rop-v2 .rop-v2-timetable-title { display:block; font-size:16px; color:var(--rop-accent-text); line-height:1.45; overflow-wrap:anywhere; }
.rop-v2 .rop-v2-timetable-role { color:var(--rop-muted); font-size:12px; line-height:1.5; margin-top:5px; }
.rop-v2 .rop-v2-timetable-context { font-size:11px; color:var(--rop-muted); background:var(--rop-soft); padding:4px 8px; border-radius:14px; font-weight:600; }
.rop-v2 .rop-v2-timetable-badge { display:inline-flex; align-items:center; gap:5px; background:#dff5e8; color:#216944; border-radius:16px; padding:4px 9px; font-size:11px; font-weight:700; }
.rop-v2 .rop-v2-timetable-ics-link { display:inline-flex; align-items:center; gap:6px; border:0; padding:4px 0; margin-top:6px; background:transparent; cursor:pointer; color:var(--rop-accent-text); text-decoration:none; font-size:12px; font-weight:600; }
.rop-v2 .rop-v2-timetable-ics-link:hover { text-decoration:underline; color:var(--rop-accent-text); }
.rop-v2 .rop-v2-timetable-talks { display:grid; gap:1px; background:var(--rop-soft); border-top:1px solid var(--rop-line); padding-left:98px; }
.rop-v2 .rop-v2-timetable-talk { display:grid; grid-template-columns:105px minmax(0,1fr); gap:10px; padding:12px 17px; background:#fff; }
.rop-v2 .rop-v2-timetable-talk.is-mine { background:var(--rop-soft); }
.rop-v2 .rop-v2-timetable-talk-time { padding-top:3px; color:var(--rop-accent-text); font-size:12px; font-weight:650; font-variant-numeric:tabular-nums; white-space:nowrap; }
.rop-v2 .rop-v2-timetable-talk-details { min-width:0; }
.rop-v2 .rop-v2-timetable-talk-details > strong { display:block; color:var(--rop-accent-text); font-size:14px; line-height:1.45; overflow-wrap:anywhere; }
.rop-v2 .rop-v2-timetable-talk.is-context .rop-v2-timetable-talk-details > strong { color:var(--rop-muted); font-weight:600; }
.rop-v2 .rop-v2-timetable-footer { display:flex; align-items:flex-start; gap:9px; background:var(--rop-soft); color:var(--rop-muted); border:1px solid var(--rop-line); border-radius:8px; padding:13px 15px; font-size:13px; line-height:1.6; margin-top:17px; }
.rop-v2 .rop-v2-timetable-footer > i { color:var(--rop-accent-text); margin-top:4px; }
.rop-v2 .rop-v2-timetable-footer a { color:var(--rop-accent-text); font-weight:650; }
.rop-v2 .rop-v2-timetable-export-status { color:#855b26; margin:12px 0 0; }
.rop-v2 .rop-v2-timetable-tool:focus-visible,
.rop-v2 .rop-v2-timetable-ics-link:focus-visible,
.rop-v2 .rop-v2-timetable-views a:focus-visible,
.rop-v2 .rop-v2-timetable-filter-go:focus-visible { outline:3px solid var(--rop-border-strong); outline-offset:3px; }
@media(max-width:950px) {
  .rop-v2 .rop-v2-timetable-toolbar { align-items:stretch; flex-direction:column; }
  .rop-v2 .rop-v2-timetable-talks { padding-left:75px; }
  .rop-v2 .rop-v2-timetable-session-head { grid-template-columns:75px minmax(0,1fr); }
}
@media(max-width:560px) {
  .rop-v2 .rop-v2-timetable-panel .rop-v2-panel-body { padding:14px; }
  .rop-v2 .rop-v2-timetable-views, .rop-v2 .rop-v2-timetable-tools { width:100%; }
  .rop-v2 .rop-v2-timetable-views a { flex:1 1 140px; }
  .rop-v2 .rop-v2-timetable-tool { flex:1 1 120px; }
  .rop-v2 .rop-v2-timetable-day-form { width:100%; }
  .rop-v2 .rop-v2-timetable-day-form select { flex:1 1 175px; min-width:0; }
  .rop-v2 .rop-v2-timetable-session-head { grid-template-columns:1fr; }
  .rop-v2 .rop-v2-timetable-time { display:flex; align-items:center; gap:10px; justify-content:flex-start; border:0; border-bottom:1px solid var(--rop-line); padding:10px 13px; text-align:left; }
  .rop-v2 .rop-v2-timetable-time strong { font-size:14px; }
  .rop-v2 .rop-v2-timetable-time span { margin:0; font-size:12px; }
  .rop-v2 .rop-v2-timetable-session-body { padding:12px 13px; }
  .rop-v2 .rop-v2-timetable-talks { padding-left:0; }
  .rop-v2 .rop-v2-timetable-talk { grid-template-columns:1fr; gap:5px; padding:12px 13px; }
  .rop-v2 .rop-v2-timetable-talk-time { padding:0; }
  .rop-v2 .rop-v2-timetable-day > h4 { font-size:14px; }
}
@media print {
  .rop-v2 .rop-v2-preview, .rop-v2 .rop-v2-tabs, .rop-v2 .rop-v2-timetable-toolbar,
  .rop-v2 .rop-v2-timetable-filters, .rop-v2 .rop-v2-timetable-ics-link,
  .rop-v2 .rop-v2-timetable-footer, .rop-v2 .rop-v2-back { display:none!important; }
  .rop-v2 .rop-v2-timetable-panel { box-shadow:none; border:0; }
  .rop-v2 .rop-v2-timetable-day-items { display:block; }
  .rop-v2 .rop-v2-timetable-session { break-inside:avoid; page-break-inside:avoid; margin-bottom:9px; }
  .rop-v2 .rop-v2-timetable-panel .rop-v2-panel-body { padding:8px 0; }
}

/* Brand color for each authorized congress; selected tab always unmistakable. */
.rop-v2 .rop-v2-congress-switch {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  margin: 14px 0 20px;
}
.rop-v2 .rop-v2-congress-track {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  gap: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 3px 2px 9px;
  scrollbar-width: none;
  -ms-overflow-style: none;
  scroll-snap-type: x proximity;
}
.rop-v2 .rop-v2-congress-track::-webkit-scrollbar { display: none; }
.rop-v2 .rop-v2-congress-option {
  position: relative;
  flex: 0 0 260px;
  width: 260px;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  color: var(--rop-option-accent-text);
  border: 2px solid var(--rop-option-border-strong);
  background: var(--rop-option-soft);
  text-decoration: none;
  scroll-snap-align: center;
  transition: background-color .18s, box-shadow .18s, opacity .18s, transform .18s;
}
.rop-v2 .rop-v2-congress-option:not(.is-selected) { opacity: .92; }
.rop-v2 .rop-v2-congress-option.is-selected {
  background: var(--rop-option-accent);
  color: var(--rop-option-on-accent);
  border-color: var(--rop-option-border-strong);
  box-shadow: 0 0 0 1px var(--rop-option-border-strong), 0 5px 12px rgba(0,0,0,.15);
  opacity: 1;
}
.rop-v2 .rop-v2-congress-option.is-selected::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 4px;
  width: 43px;
  height: 3px;
  border-radius: 3px;
  transform: translateX(-50%);
  background: var(--rop-option-on-accent);
}
.rop-v2 a.rop-v2-congress-option:not(.is-selected):hover,
.rop-v2 a.rop-v2-congress-option:not(.is-selected):focus {
  color: var(--rop-option-accent-text);
  background: var(--rop-option-soft-hover);
  border-color: var(--rop-option-border-strong);
  opacity: 1;
  text-decoration: none;
  box-shadow: 0 3px 9px rgba(0,0,0,.12);
}
.rop-v2 a.rop-v2-congress-option.is-selected:hover,
.rop-v2 a.rop-v2-congress-option.is-selected:focus {
  background: var(--rop-option-accent-hover);
  color: var(--rop-option-on-accent-hover);
  border-color: var(--rop-option-border-strong);
  text-decoration: none;
}
.rop-v2 .rop-v2-congress-option.is-selected:hover::after,
.rop-v2 .rop-v2-congress-option.is-selected:focus::after {
  background: var(--rop-option-on-accent-hover);
}
.rop-v2 .rop-v2-congress-option img {
  background: #fff;
  border-radius: 5px;
  padding: 4px;
  flex: 0 0 78px;
}
.rop-v2 .rop-v2-congress-info { display:block; min-width:0; }
.rop-v2 .rop-v2-congress-option strong,
.rop-v2 .rop-v2-congress-option small { overflow-wrap:anywhere; color:inherit; }
.rop-v2 .rop-v2-congress-option small { opacity: .91; }
.rop-v2 .rop-v2-congress-arrow {
  display:none;
  flex:0 0 36px;
  align-items:center;
  justify-content:center;
  width:36px;
  height:44px;
  padding:0;
  border:1px solid var(--rop-border-strong);
  border-radius:7px;
  background:var(--rop-soft);
  color:var(--rop-accent-text);
  cursor:pointer;
}
.rop-v2 .rop-v2-congress-switch.has-overflow .rop-v2-congress-arrow { display:flex; }
.rop-v2 .rop-v2-congress-arrow:hover:not(:disabled) {
  background:var(--rop-soft-hover);
  border-color:var(--rop-border-strong);
}
.rop-v2 .rop-v2-congress-arrow:disabled { opacity:.35; cursor:default; }
.rop-v2 .rop-v2-congress-arrow:focus-visible,
.rop-v2 .rop-v2-congress-option:focus-visible { outline:3px solid var(--rop-accent-text); outline-offset:2px; }
@media(max-width:590px) {
  .rop-v2 .rop-v2-congress-switch { gap:5px; }
  .rop-v2 .rop-v2-congress-track { gap:8px; }
  .rop-v2 .rop-v2-congress-switch.has-overflow .rop-v2-congress-arrow { flex-basis:30px; width:30px; }
  .rop-v2 .rop-v2-congress-option { width:260px; max-width:100%; gap:8px; padding:10px; }
  .rop-v2 .rop-v2-congress-option img { flex:0 0 58px; width:58px; height:45px; }
  .rop-v2 .rop-v2-congress-option strong { font-size:14px; }
  .rop-v2 .rop-v2-congress-option small { font-size:11px; }
}
@media print { .rop-v2 .rop-v2-congress-switch { display:none!important; } }

/* All colored actions and headings use a foreground with verified contrast.
   Warnings, errors, accepted/declined statuses and neutral disabled controls
   retain their semantic colors. */
.rop-v2 .rop-v2-panel h3,
.rop-v2 .rop-v2-tab.is-current,
.rop-v2 .rop-v2-assignment-filter a.is-active,
.rop-v2 .rop-v2-timetable-views a.is-active,
.rop-v2 .rop-v2-timetable-filter-go,
.rop-v2 .rop-v2-hotel-day.is-start,
.rop-v2 .rop-v2-hotel-day.is-end,
.rop-v2 .rop-v2-profile-actions button,
.rop-v2 .rop-v2-action-save,
.rop-v2 .rop-v2-hotel-service-primary,
.rop-v2 .btn-primary {
  color:var(--rop-on-accent)!important;
  background-color:var(--rop-accent);
  border-color:var(--rop-border-strong);
}
.rop-v2 .rop-v2-tab.is-current { background:var(--rop-accent); }
.rop-v2 .rop-v2-panel h3 { background:var(--rop-accent); }
.rop-v2 .rop-v2-profile-actions button:hover,
.rop-v2 .rop-v2-action-save:hover,
.rop-v2 .rop-v2-hotel-service-primary:hover,
.rop-v2 .rop-v2-timetable-filter-go:hover,
.rop-v2 .btn-primary:hover,
.rop-v2 .btn-primary:focus,
.rop-v2 .btn-primary:active {
  background:var(--rop-accent-hover);
  border-color:var(--rop-border-strong);
  color:var(--rop-on-accent-hover)!important;
}
.rop-v2 .rop-v2-tab.is-current:hover,
.rop-v2 .rop-v2-tab.is-current:focus {
  background:var(--rop-accent-hover);
  color:var(--rop-on-accent-hover)!important;
}
.rop-v2 .rop-v2-hotel-day.is-start:hover,
.rop-v2 .rop-v2-hotel-day.is-end:hover {
  background:var(--rop-accent-hover);
  color:var(--rop-on-accent-hover)!important;
}
.rop-v2 .rop-v2-coi-options input[type=checkbox],
.rop-v2 .rop-v2-hotel-checks input[type=checkbox],
.rop-v2 input[type=radio] { accent-color:var(--rop-accent); }
.rop-v2 .rop-v2-coi-options input[type=checkbox]:focus-visible,
.rop-v2 .rop-v2-hotel-checks input[type=checkbox]:focus-visible,
.rop-v2 input[type=radio]:focus-visible { outline:2px solid var(--rop-accent-text); outline-offset:2px; }

.rop-v2 .rop-v2-message.is-success, .rop-v2 .rop-v2-message.is-error, .rop-v2 .rop-v2-message.is-warning { /* unchanged */ }
@media print { .rop-v2 .rop-v2-panel h3 { -webkit-print-color-adjust:exact; print-color-adjust:exact; } }


/* ROP contact dialog: central card keeps the familiar TMP contact design.
   Only the congress banner and the ROP trigger take congress colors. */
.rop-v2 .rop-v2-header { justify-content:space-between; }
.rop-v2 .rop-v2-header-title { display:flex; align-items:center; gap:12px; min-width:0; }
.rop-v2 .rop-v2-header-title > i { color:var(--rop-accent-text); font-size:19px; }
.rop-v2 .rop-v2-contact-trigger {
  display:inline-flex; align-items:center; justify-content:center; gap:9px;
  margin-left:auto; padding:9px 14px; border:1px solid var(--rop-border-strong);
  background:var(--rop-accent); color:var(--rop-on-accent); border-radius:8px;
  font-size:13px; font-weight:650; cursor:pointer; transition:box-shadow .16s, background-color .16s;
}
.rop-v2 .rop-v2-contact-trigger:hover,
.rop-v2 .rop-v2-contact-trigger:focus-visible {
  background:var(--rop-accent-hover); color:var(--rop-on-accent-hover);
  box-shadow:0 4px 12px rgba(0,0,0,.15);
}
.rop-v2 .rop-v2-contact-trigger:focus-visible { outline:3px solid var(--rop-border-strong); outline-offset:3px; }
.rop-v2 .rop-v2-contact-trigger-mobile { display:none; }
.rop-v2-contact-modal-open { overflow:hidden!important; }
.rop-v2 .rop-v2-contact-overlay[hidden],
.rop-v2 .rop-v2-contact-arrow[hidden],
.rop-v2 .rop-v2-contact-side-hit[hidden] { display:none!important; }
.rop-v2 .rop-v2-contact-overlay {
  position:fixed; inset:0; z-index:10060; display:flex;
  align-items:center; justify-content:center; padding:20px;
  background:rgba(24,32,43,.66);
}
.rop-v2 .rop-v2-contact-dialog {
  position:relative; width:min(1020px, 100%); min-width:0;
  max-height:calc(100vh - 40px); overflow-y:auto; overflow-x:hidden;
  background:#fff; border-radius:15px; padding:26px 28px 29px;
  box-shadow:0 25px 70px rgba(0,0,0,.3); color:#30343a;
}
/* Dialog width depends on the number of authorized congress contacts. */
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="single"] .rop-v2-contact-dialog {
  width:min(404px,100%);
}
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-dialog {
  width:min(730px,100%);
}
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="triple"] .rop-v2-contact-dialog {
  width:min(1020px,100%);
}
.rop-v2 .rop-v2-contact-top { display:flex; justify-content:space-between; gap:16px; align-items:start; }
.rop-v2 .rop-v2-contact-top h3 { font-size:22px; line-height:1.3; font-weight:700; color:#27323b; margin:0 0 5px; }
.rop-v2 .rop-v2-contact-top p { margin:0; color:#5c6874; font-size:13px; line-height:1.5; }
.rop-v2 .rop-v2-contact-close {
  display:flex; align-items:center; justify-content:center; flex:0 0 40px; width:40px; height:40px;
  border:0; background:transparent; color:#686868; border-radius:50%; cursor:pointer; font-size:25px;
}
.rop-v2 .rop-v2-contact-close:hover { color:#222; background:#f1f3f5; }
.rop-v2 .rop-v2-contact-close:focus-visible { outline:2px solid #24354c; outline-offset:2px; }
.rop-v2 .rop-v2-contact-stage {
  --rop-contact-card-width:320px; --rop-contact-side-shift:323px;
  position:relative; isolation:isolate; height:430px; margin:17px 0 0;
  overflow:hidden; touch-action:pan-y;
}
.rop-v2 .rop-v2-contact-slide {
  position:absolute; top:0; left:50%; width:var(--rop-contact-card-width);
  background:#fff; border:1px solid #e3e6eb; border-radius:13px;
  box-shadow:0 7px 24px rgba(18,29,39,.14); overflow:hidden;
  transform:translateX(-50%); transition:transform .22s ease, opacity .22s ease, filter .22s ease;
  text-align:center; color:#353535; display:none;
}
.rop-v2 .rop-v2-contact-slide.is-current {
  display:block; z-index:3; transform:translateX(-50%) scale(1); opacity:1;
}
.rop-v2 .rop-v2-contact-slide.is-prev {
  display:block; z-index:1; transform:translateX(calc(-50% - var(--rop-contact-side-shift))) scale(.85);
  opacity:.58; filter:saturate(.7);
}
.rop-v2 .rop-v2-contact-slide.is-next {
  display:block; z-index:1; transform:translateX(calc(-50% + var(--rop-contact-side-shift))) scale(.85);
  opacity:.58; filter:saturate(.7);
}
/* With two contacts, show both in a genuinely two-card-wide dialog.
   The active card takes the left or right position according to tab order. */
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-stage {
  --rop-contact-card-width:310px;
}
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-stage.is-at-first .rop-v2-contact-slide.is-current,
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-stage.is-at-last .rop-v2-contact-slide.is-prev {
  left:25%;
}
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-stage.is-at-last .rop-v2-contact-slide.is-current,
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-stage.is-at-first .rop-v2-contact-slide.is-next {
  left:75%;
}
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-slide.is-prev,
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-slide.is-next {
  transform:translateX(-50%) scale(.9);
}
.rop-v2 .rop-v2-contact-congress {
  min-height:43px; display:flex; align-items:center; justify-content:center; padding:8px 12px;
  background:var(--rop-contact-accent); color:var(--rop-contact-on-accent);
  font-size:17px; font-weight:700;
}
.rop-v2 .rop-v2-contact-portrait {
  background:#f8f9fa; padding:20px 12px 18px;
  display:flex; align-items:center; justify-content:center;
}
.rop-v2 .rop-v2-contact-portrait img,
.rop-v2 .rop-v2-contact-photo-placeholder {
  width:172px; height:172px; border-radius:50%; object-fit:cover; background:#eceff2;
}
.rop-v2 .rop-v2-contact-photo-placeholder { display:flex; align-items:center; justify-content:center; color:#8c929a; font-size:62px; }
.rop-v2 .rop-v2-contact-details { background:#fff; padding:16px 15px 22px; min-height:152px; }
.rop-v2 .rop-v2-contact-name { display:block; margin:0 0 14px; color:#333; font-size:18px; font-weight:700; }
.rop-v2 .rop-v2-contact-lines { display:table; max-width:100%; margin:0 auto; text-align:left; font-size:13px; line-height:1.65; }
.rop-v2 .rop-v2-contact-line { display:flex; gap:8px; min-width:0; align-items:baseline; overflow-wrap:anywhere; }
.rop-v2 .rop-v2-contact-line > i { width:15px; flex:0 0 15px; text-align:center; font-size:13px; color:#404040; }
.rop-v2 .rop-v2-contact-line > span { color:#414141; }
.rop-v2 .rop-v2-contact-line a, .rop-v2 .rop-v2-contact-line a:visited { color:#267bb9; text-decoration:none; }
.rop-v2 .rop-v2-contact-line a:hover, .rop-v2 .rop-v2-contact-line a:focus { color:#16578c; text-decoration:underline; }
.rop-v2 .rop-v2-contact-line a[href^="tel:"] { color:#414141; }
.rop-v2 .rop-v2-contact-line a[href^="tel:"]:hover { color:#161616; }
.rop-v2 .rop-v2-contact-arrow {
  position:absolute; z-index:6; top:46%; transform:translateY(-50%);
  display:flex; align-items:center; justify-content:center;
  width:49px; height:49px; border-radius:50%; border:1px solid #e3e5e8;
  background:#fff; color:#42474d; box-shadow:0 3px 12px rgba(0,0,0,.12);
  font-size:20px; cursor:pointer;
}
.rop-v2 .rop-v2-contact-arrow.is-prev { left:5px; }
.rop-v2 .rop-v2-contact-arrow.is-next { right:5px; }
.rop-v2 .rop-v2-contact-arrow:hover { color:#161f2b; background:#f3f5f7; }
.rop-v2 .rop-v2-contact-arrow:focus-visible { outline:2px solid #27323b; outline-offset:3px; }
.rop-v2 .rop-v2-contact-side-hit {
  position:absolute; z-index:4; top:0; bottom:0;
  width:max(24px,calc(50% - 170px));
  padding:0; margin:0; border:0; background:transparent; cursor:pointer;
}
.rop-v2 .rop-v2-contact-side-hit.is-prev { left:0; }
.rop-v2 .rop-v2-contact-side-hit.is-next { right:0; }
.rop-v2 .rop-v2-contact-side-hit:focus-visible { outline:3px solid #384959; outline-offset:-3px; }
.rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="double"] .rop-v2-contact-side-hit { width:49%; }
/* Actual navigation dots, including for two contacts (quick selection is separate). */
.rop-v2 .rop-v2-contact-pagination {
  display:flex; align-items:center; justify-content:center; flex-wrap:wrap;
  gap:7px; margin:2px 0 8px; padding:0 0 1px;
}
.rop-v2 .rop-v2-contact-dot {
  display:flex; justify-content:center; align-items:center;
  width:26px; height:26px; padding:0; border:0; border-radius:50%;
  background:transparent; cursor:pointer;
}
.rop-v2 .rop-v2-contact-dot > span {
  display:block; width:10px; height:10px; background:#c6cbd1; border-radius:50%;
  transition:width .16s, height .16s, background-color .16s;
}
.rop-v2 .rop-v2-contact-dot.is-current > span {
  width:13px; height:13px; background:var(--rop-contact-accent);
  box-shadow:0 0 0 2px #fff, 0 0 0 3px var(--rop-contact-border);
}
.rop-v2 .rop-v2-contact-dot:hover > span { background:var(--rop-contact-accent); }
.rop-v2 .rop-v2-contact-dot:focus-visible { outline:2px solid #27323b; outline-offset:1px; }
.rop-v2 .rop-v2-contact-quick { display:none; align-items:center; justify-content:center; flex-wrap:wrap; gap:7px; padding:0 0 2px; }
.rop-v2 .rop-v2-contact-quick-button {
  padding:5px 10px; max-width:180px; border:1px solid var(--rop-contact-border);
  border-radius:16px; background:#fff; color:var(--rop-contact-accent-text);
  font-size:12px; font-weight:600; cursor:pointer;
}
.rop-v2 .rop-v2-contact-quick-button:hover { background:var(--rop-contact-soft); }
.rop-v2 .rop-v2-contact-quick-button.is-current { background:var(--rop-contact-accent); color:var(--rop-contact-on-accent); }
@media (min-width:850px) and (min-height:730px) {
  .rop-v2 .rop-v2-contact-quick { display:flex; }
}
@media (max-width:800px) {
  /* On phones and narrow tablets, always show just the focused contact. */
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout] .rop-v2-contact-dialog {
    width:min(420px,100%); padding:18px 12px 18px;
  }
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="single"] .rop-v2-contact-dialog {
    width:min(404px,100%);
  }
  .rop-v2 .rop-v2-contact-top { padding:0 8px; }
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout] .rop-v2-contact-stage { --rop-contact-card-width:min(320px,calc(100% - 78px)); }
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout] .rop-v2-contact-stage .rop-v2-contact-slide.is-current { left:50%!important; }
  .rop-v2 .rop-v2-contact-stage .rop-v2-contact-slide.is-prev,
  .rop-v2 .rop-v2-contact-stage .rop-v2-contact-slide.is-next { display:none; }
  .rop-v2 .rop-v2-contact-side-hit { display:none!important; }
}
@media (max-width:520px) {
  .rop-v2 .rop-v2-header { align-items:flex-start; }
  .rop-v2 .rop-v2-contact-trigger { padding:8px 10px; font-size:12px; }
  .rop-v2 .rop-v2-contact-trigger .rop-v2-contact-trigger-label { display:none; }
  .rop-v2 .rop-v2-contact-trigger-mobile { display:inline; }
  .rop-v2 .rop-v2-contact-overlay { padding:8px; }
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout] .rop-v2-contact-dialog {
    max-height:calc(100vh - 16px); padding:13px 7px 13px; border-radius:12px;
  }
  .rop-v2 .rop-v2-contact-top h3 { font-size:18px; }
  .rop-v2 .rop-v2-contact-top p { font-size:12px; }
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout] .rop-v2-contact-stage {
    --rop-contact-card-width:min(292px,calc(100% - 68px));
    height:425px; margin-top:14px;
  }
  .rop-v2 .rop-v2-contact-overlay[data-rop-contact-layout="single"] .rop-v2-contact-stage {
    --rop-contact-card-width:min(292px,100%);
  }
  .rop-v2 .rop-v2-contact-congress { font-size:15px; min-height:39px; }
  .rop-v2 .rop-v2-contact-portrait { padding:14px 9px; }
  .rop-v2 .rop-v2-contact-portrait img,
  .rop-v2 .rop-v2-contact-photo-placeholder { width:151px; height:151px; }
  .rop-v2 .rop-v2-contact-details { padding:14px 10px 18px; }
  .rop-v2 .rop-v2-contact-name { font-size:17px; }
  .rop-v2 .rop-v2-contact-lines { font-size:12px; }
  .rop-v2 .rop-v2-contact-arrow { width:38px; height:38px; font-size:16px; top:43%; }
  .rop-v2 .rop-v2-contact-arrow.is-prev { left:0; }
  .rop-v2 .rop-v2-contact-arrow.is-next { right:0; }
  .rop-v2 .rop-v2-contact-side-hit { width:max(24px,calc(50% - 155px)); }
}
@media (max-height:550px) {
  .rop-v2 .rop-v2-contact-overlay { padding:6px; align-items:flex-start; }
  .rop-v2 .rop-v2-contact-dialog { max-height:calc(100vh - 12px); }
}
@media (prefers-reduced-motion:reduce) {
  .rop-v2 .rop-v2-contact-slide { transition:none; }
}
@media print {
  .rop-v2 .rop-v2-contact-trigger,
  .rop-v2 .rop-v2-contact-overlay { display:none!important; }
}
