.review-page { padding-bottom: 0; }
.review-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 98px; padding-block: 18px; }
.review-main { padding-block: 54px 76px; }
.review-intro { max-width: 740px; margin-bottom: 38px; }
.review-intro h1 { font-size: clamp(2.5rem, 5vw, 4.1rem); margin: 18px 0; }
.review-intro > p:last-child { color: var(--muted); max-width: 600px; font-size: 1.1rem; }
.review-layout { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(260px, 1fr); gap: 36px; align-items: start; }
.review-panel { border: 1px solid var(--line); padding: clamp(20px, 3vw, 38px); border-radius: 8px; background: white; min-width: 0; }
.review-panel h2 { font-size: 2rem; margin-bottom: 12px; }
.review-muted, .field-hint { color: var(--muted); }
.review-muted { font-size: .9375rem; }
.review-field { margin-top: 22px; }
.review-field > label, .rating-field legend { display: block; font-size: .9375rem; font-weight: 600; margin-bottom: 8px; }
.review-field input, .review-field select, .review-field textarea, .admin-toolbar select, .moderation-actions select { width: 100%; min-height: 48px; padding: 12px; border: 1px solid #a9b0b8; border-radius: 4px; color: var(--ink); background: white; font: inherit; font-size: 1rem; }
.review-field textarea { resize: vertical; }
.review-field input:focus, .review-field textarea:focus, .review-field select:focus, .moderation-actions select:focus { outline: 2px solid var(--burgundy); outline-offset: 2px; }
.field-hint { font-size: .8125rem; line-height: 1.55; margin-top: 7px; }
.rating-field { border: 0; margin: 24px 0 0; padding: 0; min-width: 0; }
.rating-options { display: flex; gap: 10px; }
.rating-options label { position: relative; flex: 1; max-width: 76px; cursor: pointer; }
.rating-options input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.rating-options label > span:not(.sr-only) { display: flex; gap: 7px; align-items: center; justify-content: center; min-height: 50px; border: 1px solid #a9b0b8; border-radius: 5px; font-weight: 600; background: white; }
.rating-options b { color: var(--burgundy); font-size: 1.2rem; }
.rating-options input:checked + span { background: var(--burgundy); color: white; border-color: var(--burgundy); }
.rating-options input:checked + span b { color: white; }
.rating-options input:focus-visible + span { outline: 3px solid #b27532; outline-offset: 3px; }
.consent-check { display: flex; gap: 12px; font-size: .875rem; line-height: 1.6; margin: 25px 0; cursor: pointer; }
.consent-check input { flex: 0 0 20px; width: 20px; height: 20px; margin: 4px 0; accent-color: var(--burgundy); }
.review-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
button { font-family: inherit; cursor: pointer; }
button:disabled { opacity: .6; cursor: wait; }
.form-status { margin: 16px 0; color: var(--muted); font-size: .9375rem; overflow-wrap: anywhere; }
.form-status.error { color: #a22432; }
.review-success { border-left: 3px solid #32654b; background: #f1f7f3; padding: 24px; margin-top: 24px; }
.review-success p { margin-top: 12px; }
#review-reference { display: block; font-size: .875rem; overflow-wrap: anywhere; }
.review-success a, .review-policy a { text-decoration: underline; text-underline-offset: 3px; }
.review-qr-card { padding: 28px; background: var(--paper); text-align: center; border-radius: 8px; border: 1px solid var(--line); }
.review-qr-card img { background: white; width: min(100%, 240px); height: auto; margin: 18px auto; }
.review-qr-card .review-muted { margin-top: 12px; }
.review-qr-card .text-link { display: flex; justify-content: center; margin-top: 14px; }
.review-policy { margin-top: 22px; border-top: 1px solid var(--line); padding-top: 18px; font-size: .875rem; }
.review-policy summary { cursor: pointer; font-weight: 600; }
.review-policy p { margin-top: 14px; color: var(--muted); }
.published-section { margin-top: 64px; border-top: 1px solid var(--line); padding-top: 48px; }
.review-section-heading { display: flex; justify-content: space-between; align-items: end; flex-wrap: wrap; gap: 20px; margin-bottom: 14px; }
.review-section-heading h2 { margin-top: 12px; }
.review-summary { font-weight: 600; color: var(--burgundy); font-size: 1.1rem; }
.review-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-top: 26px; }
.review-card { padding: 25px; border: 1px solid var(--line); border-radius: 6px; background: white; min-width: 0; }
.review-card .review-stars { color: var(--burgundy); font-size: 1.2rem; letter-spacing: 2px; }
.review-card .review-body { white-space: pre-wrap; overflow-wrap: anywhere; margin: 15px 0 20px; line-height: 1.7; }
.review-card .review-author { font-weight: 600; }
.review-card .review-meta { font-size: .8125rem; color: var(--muted); margin-top: 4px; }
.review-empty { grid-column: 1 / -1; padding: 26px; border: 1px dashed #c4c9ce; border-radius: 6px; color: var(--muted); }
.secondary-button { color: var(--burgundy); background: white; }
.secondary-button:hover { color: white; }
#reviews-more { margin-top: 24px; }
.review-footer { border-top: 1px solid var(--line); padding-block: 25px; background: var(--paper); font-size: .875rem; }
.review-footer .wrap { display: flex; flex-wrap: wrap; gap: 15px 30px; justify-content: space-between; }
.review-footer a { text-decoration: underline; min-height: 44px; display: inline-flex; align-items: center; }
.home-reviews { background: #fcfaf9; border-bottom: 1px solid var(--line); }
.home-review-top { display: grid; grid-template-columns: 1fr auto; gap: 36px; align-items: center; }
.home-review-top h2 { margin: 14px 0 20px; }
.home-review-top p:not(.eyebrow) { max-width: 600px; color: var(--muted); }
.home-review-top .hero-actions { margin-top: 22px; }
.home-review-qr { text-align: center; font-size: .8125rem; color: var(--muted); }
.home-review-qr img { width: 150px; height: 150px; margin: 0 auto 8px; }
.home-reviews .review-summary { margin-top: 28px; }
.moderation-guidance { background: var(--paper); border-left: 3px solid var(--burgundy); padding: 20px 24px; }
.moderation-guidance p { font-size: .9375rem; margin-top: 8px; }
.admin-toolbar { display: flex; gap: 20px; flex-wrap: wrap; align-items: center; margin: 24px 0; }
.admin-toolbar label { display: flex; gap: 10px; align-items: center; }
.admin-toolbar select { width: auto; }
.admin-toolbar p { flex: 1; }
.admin-list { display: grid; gap: 20px; }
.moderation-actions { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-end; padding-top: 20px; border-top: 1px solid var(--line); }
.moderation-rejection { display: flex; flex: 1 1 320px; align-items: flex-end; gap: 12px; min-width: 0; }
.moderation-actions label { flex: 1; min-width: 0; font-size: .875rem; margin: 0; }
.moderation-actions select { display: block; margin: 6px 0 0; height: 54px; }
.moderation-actions .button { margin: 0; height: 54px; white-space: nowrap; }
.moderation-actions .button:focus-visible, #admin-signout:focus-visible { outline: 2px solid var(--burgundy); outline-offset: 3px; }
#admin-google-signin { margin-top: 20px; }
@media (max-width: 480px) { .moderation-actions > .button { width: 100%; } .moderation-rejection { flex-basis: 100%; } .moderation-rejection .button { padding-inline: 16px; } }
.admin-reference { font-size: .75rem; overflow-wrap: anywhere; color: var(--muted); margin-block: 12px; }
.admin-pagination { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-top: 24px; }
[hidden] { display: none !important; }
@media (max-width: 900px) { .review-layout { grid-template-columns: minmax(0, 1.4fr) minmax(230px, 1fr); gap: 24px; } .review-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .review-layout { grid-template-columns: 1fr; } .review-cards { grid-template-columns: 1fr; } .review-main { padding-top: 32px; } .review-header { min-height: 80px; gap: 16px; } .review-header .wordmark > span { font-size: 1.45rem; } .review-header .wordmark small { font-size: .55rem; } .review-header > .text-link { font-size: .8125rem; text-align: right; } .home-review-top { grid-template-columns: 1fr; } .home-review-qr { justify-self: start; } .rating-options { gap: 7px; } .rating-options label > span:not(.sr-only) { gap: 4px; } .review-footer .wrap { display: grid; } }
@media print { .review-header, .review-footer, #review-form, .review-policy, .published-section { display: none; } }
