/* Visitor ratings and owner moderation follow the existing café editorial style. */
.visitor-ratings,.ratings-admin,.quick-rating-dialog {
  --rating-paper:var(--brand-paper,#f3eadb); --rating-ink:var(--brand-ink,#211a15); --rating-muted:var(--brand-muted,#756754);
  --rating-accent:var(--brand-clay,#b94a32); --rating-line:var(--brand-rule,#cbbda7);
  color:var(--rating-ink);
}
.visitor-ratings { box-sizing:border-box; width:min(960px,calc(100% - 44px)); margin-inline:auto; scroll-margin-top:8rem; padding:clamp(48px,6vw,88px) 0; border-block:1px solid var(--rating-line); }
.ratings-heading h2,.ratings-admin h1 { margin:0; font-size:clamp(1.5rem,2.2vw,2.25rem); font-weight:500; }
.ratings-summary { display:flex; align-items:center; gap:1.5rem; margin-top:1.5rem; }
.ratings-summary > div { border-inline-start:1px solid var(--rating-line); padding-inline-start:1.5rem; }
.ratings-summary p { margin:0; }
.ratings-average { color:var(--rating-accent); font-size:clamp(2.4rem,4vw,3.75rem); line-height:1.3; }
.ratings-muted { color:var(--rating-muted); font-size:.95rem; line-height:1.8; }
.ratings-notice:not(:empty) { padding-block:1rem; border-block:1px solid var(--rating-line); }
.ratings-columns { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2rem,5vw,5rem); margin-top:2rem; padding-top:2rem; border-top:1px solid var(--rating-line); }
.rating-form { min-width:0; }
.rating-form h3 { margin-top:0; font-size:1.5rem; }
.rating-form label,.rating-filters label { display:block; margin-block:1.25rem .5rem; color:var(--rating-muted); }
.rating-form textarea,.rating-form input,.rating-filters input,.rating-filters select { box-sizing:border-box; width:100%; min-height:48px; padding:.6rem .85rem; border:1px solid var(--rating-line); border-radius:0; background:transparent; color:var(--rating-ink); font:inherit; }
.rating-form input[type=number] { font-size:1.4rem; text-align:end; }
.rating-form button[type=submit],.ratings-primary { display:block; width:100%; min-height:48px; margin-top:1.5rem; padding:.85rem 1.25rem; border:1px solid var(--rating-accent); border-radius:0; background:var(--rating-accent); color:var(--brand-action-text,#fffaf1); font:inherit; cursor:pointer; }
.visitor-ratings button:disabled,.ratings-admin button:disabled { opacity:.5; cursor:not-allowed; }
.rating-form textarea:disabled,.rating-form input:disabled { opacity:.65; }
.ratings-text-button { min-height:44px; padding:.5rem .25rem; border:0; border-radius:0; background:transparent; color:var(--rating-accent); font:inherit; text-decoration:underline; text-underline-offset:.25em; cursor:pointer; }
.rating-own-actions { display:flex; flex-wrap:wrap; gap:1.5rem; }
.rating-list { margin:0; padding:0; list-style:none; }
.rating-list li { padding:1.5rem 0; border-bottom:1px solid var(--rating-line); overflow-wrap:anywhere; }
.rating-list li:first-child { padding-top:0; }
.rating-row-heading { display:flex; justify-content:space-between; align-items:baseline; gap:1rem; font-size:1.3rem; }
.rating-row-heading bdi:first-child { min-width:0; overflow-wrap:anywhere; }
.rating-row-heading bdi:last-child { flex-shrink:0; }
.visitor-ratings :focus-visible,.ratings-admin :focus-visible { outline:2px solid var(--rating-accent); outline-offset:4px; }
.visitor-ratings [hidden],.ratings-admin [hidden] { display:none !important; }
.ratings-admin { max-width:72rem; margin:0 auto; padding:clamp(1rem,4vw,3rem); background:var(--rating-paper); min-height:100vh; }
.ratings-admin-header { padding-bottom:1.5rem; border-bottom:1px solid var(--rating-line); }
.ratings-admin-header a { color:var(--rating-muted); }
.ratings-admin-toolbar { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:2.5rem; margin-top:2rem; }
.rating-filters { display:grid; gap:.5rem; }
.rating-filters label { margin-top:.5rem; }
.ratings-admin .rating-list { padding-top:1rem; }
.rating-admin-actions { display:flex; flex-wrap:wrap; gap:1.25rem; }
.rating-admin-status { color:var(--rating-muted); font-size:.9rem; }
.rating-cafe-control { border-top:1px solid var(--rating-line); margin-top:1.5rem; padding-top:.5rem; }
.rating-date-filters { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; }
.rating-date-filters > div { min-width:0; }
.ratings-admin .ratings-primary { margin-top:1rem; }
.rating-form p a { color:inherit; }
@media (max-width:700px) {
  .ratings-columns,.ratings-admin-toolbar { grid-template-columns:1fr; gap:2rem; }
  .rating-list-column { padding-top:1.5rem; border-top:1px solid var(--rating-line); }
  .ratings-admin h1 { font-size:2rem; }
  .rating-date-filters { grid-template-columns:1fr; }
}

html[dir="ltr"] .rating-form input[type=number] { text-align:start; }

.ratings-average { white-space:nowrap; }
.ratings-summary > div { min-width:0; flex:1; }
@media (max-width:700px) { .ratings-summary { gap:1rem; } .ratings-summary > div { padding-inline-start:1rem; } }

.rating-form textarea { display:block; width:100%; box-sizing:border-box; padding:.85rem; border:1px solid var(--rating-line); border-radius:0; background:transparent; color:var(--rating-ink); font:inherit; resize:vertical; min-height:7rem; }
.rating-form #ratingCommentHint { margin-top:.4rem; }
.rating-comment { margin:.75rem 0; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.8; }

.rating-delete-dialog { box-sizing:border-box; width:min(26rem,calc(100vw - 44px)); max-height:calc(100dvh - 44px); margin:auto; padding:clamp(1.25rem,5vw,2rem); border:1px solid var(--rating-line); border-radius:14px; background:var(--rating-paper); color:var(--rating-ink); font:inherit; text-align:center; }
.rating-delete-dialog::backdrop { background:rgba(0,0,0,.6); }
.rating-delete-dialog h3 { margin:0; font-size:1.6rem; font-weight:500; }
.rating-delete-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; margin-top:1.5rem; }
.rating-delete-actions button { min-height:48px; padding:.65rem .5rem; border:1px solid var(--rating-line); border-radius:8px; background:transparent; color:var(--rating-ink); font:inherit; cursor:pointer; }
.rating-delete-actions .rating-delete-confirm { border-color:var(--rating-accent); background:var(--rating-accent); color:var(--brand-action-text,#fffaf1); }

/* The invitation stays secondary to the editorial rating. */
.home-rating-invitation,.card-rating-action,.profile-participation .ratings-text-button,.visitor-ratings .ratings-text-button,.quick-rating-dialog .ratings-text-button {
  box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; width:fit-content; max-width:100%; min-height:44px; padding:.55rem 1.1rem;
  border:1px solid var(--brand-clay,#b94a32); border-radius:999px; background:transparent; color:var(--brand-clay,#b94a32);
  font:inherit; font-size:.95rem; line-height:1.5; text-align:center; text-decoration:none; cursor:pointer;
  transition:background-color .16s ease,color .16s ease;
}
:is(.home-rating-invitation,.card-rating-action,.profile-participation .ratings-text-button,.visitor-ratings .ratings-text-button,.quick-rating-dialog .ratings-text-button):not(:disabled):hover {
  background:var(--brand-clay,#b94a32); color:var(--brand-action-text,#fffaf1); text-decoration:none;
}
.home-rating-invitation { display:flex; width:fit-content; min-height:48px; margin-top:.65rem; text-align:center; color:var(--brand-clay,#b94a32); }
.profile-participation { display:flex; flex-direction:column; align-items:flex-start; gap:.15rem; margin-block:.5rem 1rem; max-width:100%; }
.profile-community-summary { color:var(--profile-muted); font-size:.95rem; line-height:1.7; text-decoration:none; overflow-wrap:anywhere; }
.profile-community-summary:hover { text-decoration:underline; }
.card-rating-action { max-width:calc(100% - 2.5rem); margin-inline:1.25rem; margin-bottom:.5rem; font-size:1rem; }
.ratings-text-button:focus-visible { outline:2px solid var(--brand-clay,#b94a32); outline-offset:3px; }
html.rating-panel-open { overflow:hidden; }
.quick-rating-dialog { box-sizing:border-box; width:min(28rem,calc(100% - 40px)); max-height:calc(100dvh - 48px); margin:auto; padding:1.75rem; border:1px solid var(--rating-line); border-radius:14px; background:var(--rating-paper); color:var(--rating-ink); font:inherit; text-align:start; overscroll-behavior:contain; }
.quick-rating-dialog::backdrop { background:rgba(0,0,0,.55); }
.quick-rating-dialog[open] { animation:rating-panel-enter .16s ease-out; }
.quick-rating-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:1.25rem; }
.quick-rating-heading > div { min-width:0; }
.quick-rating-heading h2 { margin:0; font-size:1.6rem; font-weight:500; line-height:1.4; }
.quick-rating-heading p { margin:.35rem 0 0; overflow-wrap:anywhere; }
.quick-rating-close { flex:0 0 44px; width:44px; height:44px; margin-block-start:-.5rem; margin-inline-end:-.5rem; border:0; background:transparent; color:inherit; font:inherit; font-size:1.75rem; cursor:pointer; }
.quick-rating-dialog .visitor-ratings { width:100%; margin:0; padding:0; border:0; }
.quick-rating-dialog .ratings-heading,.quick-rating-dialog .rating-list-column,.quick-rating-dialog .rating-form h3 { display:none; }
.quick-rating-dialog .ratings-columns { display:block; margin:0; padding:0; border:0; }
.quick-rating-dialog .rating-form label { margin-block:1rem .4rem; }
.quick-rating-dialog .rating-form input { min-height:48px; }
.quick-rating-dialog .rating-form input,.quick-rating-dialog .rating-form textarea,.quick-rating-dialog input[type=search] { border-radius:4px; }
.quick-rating-dialog .rating-form textarea { height:5rem; min-height:5rem; }
.quick-rating-dialog .rating-form button[type=submit] { border-radius:4px; margin-top:1.25rem; }
.quick-rating-dialog .rating-form .ratings-muted { font-size:.875rem; line-height:1.6; }
.quick-rating-dialog .rating-form p { margin-block:.65rem; }
.quick-rating-dialog #ratingFormMessage:not(:empty) { padding:.75rem 0; margin-bottom:0; border-top:1px solid var(--rating-line); }
.quick-rating-dialog #ratingCommentHint { display:none; }
.quick-rating-dialog .ratings-notice:empty { display:none; }
.quick-rating-dialog #quickRatingPicker > label { display:block; margin-bottom:.5rem; }
.quick-rating-dialog input[type=search] { box-sizing:border-box; width:100%; min-height:48px; padding:.6rem .85rem; border:1px solid var(--rating-line); background:transparent; color:inherit; font:inherit; }
.quick-rating-results { list-style:none; padding:0; margin:0; max-height:40dvh; overflow-y:auto; overscroll-behavior:contain; }
.quick-rating-results li + li { border-top:1px solid var(--rating-line); }
.quick-rating-results button { display:block; width:100%; min-height:60px; padding:.75rem .25rem; border:0; background:transparent; color:inherit; font:inherit; text-align:start; cursor:pointer; overflow-wrap:anywhere; }
.quick-rating-results button:hover { background:var(--brand-surface,rgba(0,0,0,.04)); }
.quick-rating-results bdi { display:block; color:var(--rating-muted); font-size:.875rem; }
.quick-rating-dialog :focus-visible { outline:2px solid var(--rating-accent); outline-offset:3px; }
.quick-rating-dialog button:disabled { opacity:.5; cursor:not-allowed; }
.quick-rating-dialog [hidden] { display:none !important; }
@keyframes rating-panel-enter { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }
@media (max-width:600px) {
  .home-rating-invitation { width:100%; min-height:48px; text-align:center; }
  .quick-rating-dialog { width:100%; max-width:none; max-height:calc(100dvh - 16px); margin:auto 0 0; padding:1.25rem 1.25rem max(1.25rem,env(safe-area-inset-bottom)); border-width:1px 0 0; border-radius:18px 18px 0 0; }
  .quick-rating-heading { margin-bottom:.75rem; }
  .quick-rating-heading h2 { font-size:1.5rem; }
  .profile-hero .profile-hero-copy { height:auto; }
}
@media (prefers-reduced-motion:reduce) {
  .quick-rating-dialog[open] { animation:none; }
  :is(.home-rating-invitation,.card-rating-action,.profile-participation .ratings-text-button,.visitor-ratings .ratings-text-button,.quick-rating-dialog .ratings-text-button) { transition:none; }
}
