/* ============================================================
   DVchi Trust : Stylesheet
   ============================================================ */

.dvchi-trust-card, .dvchi-badges, .dvchi-reviews-list, .dvchi-live-updates, .dvchi-tour-stats { font-family: 'Inter', -apple-system, sans-serif; }
.dvchi-trust-card *, .dvchi-badges *, .dvchi-reviews-list *, .dvchi-live-updates *, .dvchi-tour-stats * { box-sizing: border-box; }

/* ── Trust score card ─────────────────────────────────── */
.dvchi-trust-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 20px; max-width: 360px; }
.dvchi-trust-score-circle { text-align: center; margin-bottom: 8px; }
.dvchi-score-num { font-size: 22px; font-weight: 700; fill: #111; }
.dvchi-score-sub { font-size: 9px; fill: #9ca3af; }
.dvchi-trust-level { text-align: center; font-size: 14px; font-weight: 600; color: #00C2D4; margin-bottom: 14px; }
.dvchi-trust-pillars { display: flex; flex-direction: column; gap: 7px; }
.dvchi-pillar-row { display: flex; align-items: center; gap: 8px; font-size: 11px; color: #6b7280; }
.dvchi-pillar-row span:first-child { width: 90px; flex-shrink: 0; }
.dvchi-pillar-row span:last-child { width: 28px; text-align: right; font-weight: 600; color: #111; }
.dvchi-pillar-bar { flex: 1; height: 6px; background: #e5e7eb; border-radius: 3px; overflow: hidden; }
.dvchi-pillar-bar div { height: 100%; background: #00C2D4; border-radius: 3px; }

/* ── Badges ───────────────────────────────────────────── */
.dvchi-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.dvchi-badge { font-size: 11px; font-weight: 600; padding: 4px 10px; border-radius: 999px; border: 1px solid; display: inline-flex; align-items: center; gap: 4px; }
.dvchi-badge--biometric { font-style: italic; }

/* ── Reviews list ─────────────────────────────────────── */
.dvchi-reviews-list { display: flex; flex-direction: column; gap: 16px; }
.dvchi-no-reviews { color: #9ca3af; font-size: 13px; padding: 20px; text-align: center; }
.dvchi-review-item { background: #f8f8f4; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; }
.dvchi-review-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.dvchi-reviewer-avatar { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.dvchi-reviewer-info { flex: 1; min-width: 0; }
.dvchi-reviewer-info strong { display: block; font-size: 14px; color: #111; }
.dvchi-reviewer-info span { font-size: 11px; color: #9ca3af; }
.dvchi-review-stars { color: #F59E0B; letter-spacing: 1px; flex-shrink: 0; }
.dvchi-verified-badge { color: #22C55E; font-weight: 600; }
.dvchi-updated-badge { color: #00C2D4; font-weight: 600; }
.dvchi-review-title { display: block; font-weight: 600; margin-bottom: 6px; color: #111; }
.dvchi-review-body { font-size: 14px; color: #374151; line-height: 1.65; margin: 0; }
.dvchi-review-body.dvchi-retracted { font-style: italic; color: #9ca3af; }
.dvchi-review-photos { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.dvchi-review-photos img { width: 80px; height: 80px; object-fit: cover; border-radius: 8px; cursor: pointer; }
.dvchi-review-actions { display: flex; gap: 8px; margin-top: 12px; }
.dvchi-helpful-btn, .dvchi-report-review-btn { background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 5px 12px; font-size: 12px; cursor: pointer; color: #6b7280; transition: all .15s; }
.dvchi-helpful-btn:hover { border-color: #00C2D4; color: #00C2D4; }
.dvchi-report-review-btn:hover { border-color: #ef4444; color: #ef4444; }
.dvchi-review-reply { background: #fff; border-left: 3px solid #00C2D4; border-radius: 0 8px 8px 0; padding: 12px 16px; margin-top: 12px; }
.dvchi-review-reply strong { font-size: 12px; color: #00C2D4; display: block; margin-bottom: 4px; }
.dvchi-review-reply p { font-size: 13px; color: #374151; margin: 0; }

/* ── Sub-ratings (tour guides) ───────────────────────────── */
.dvchi-sub-ratings { display: flex; flex-direction: column; gap: 8px; margin: 12px 0; padding: 14px; background: #f8f8f4; border-radius: 10px; }
.dvchi-sub-rating-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 12px; color: #374151; }
.dvchi-star-select-sm label { font-size: 18px !important; }

/* ── Tour stats ───────────────────────────────────────── */
.dvchi-tour-stats-header { font-size: 14px; color: #374151; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid #e5e7eb; }
.dvchi-rating-cats { display: flex; flex-direction: column; gap: 8px; }
.dvchi-rating-cat { display: grid; grid-template-columns: 1fr auto 40px; align-items: center; gap: 10px; font-size: 12px; }
.cat-label { color: #6b7280; }
.cat-stars { color: #F59E0B; letter-spacing: 1px; }
.cat-val { font-weight: 600; color: #111; text-align: right; }

/* ── Live updates ─────────────────────────────────────── */
.dvchi-live-updates { background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 16px; }
.dvchi-live-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.dvchi-live-header h4 { font-size: 14px; font-weight: 600; color: #111; margin: 0; }
.dvchi-report-item { display: flex; gap: 10px; padding: 10px 0; border-bottom: 1px solid #f3f4f6; align-items: flex-start; }
.dvchi-report-item:last-child { border-bottom: none; }
.dvchi-report-icon { font-size: 18px; flex-shrink: 0; }
.dvchi-report-body { flex: 1; }
.dvchi-report-body p { font-size: 13px; color: #374151; margin: 0 0 4px; }
.dvchi-report-meta { display: flex; gap: 8px; align-items: center; font-size: 11px; color: #9ca3af; }
.dvchi-verify-tag { font-weight: 600; padding: 1px 8px; border-radius: 999px; }
.dvchi-verify-not { background: #f3f4f6; color: #6b7280; }
.dvchi-verify-partial { background: #FEF3C7; color: #D97706; }
.dvchi-verify-community { background: #F0FDF4; color: #22C55E; }
.dvchi-verify-trusted { background: #F5F3FF; color: #9333EA; }
.dvchi-confirm-btn { background: none; border: 1px solid #e5e7eb; border-radius: 6px; padding: 2px 8px; font-size: 11px; cursor: pointer; color: #6b7280; }
.dvchi-confirm-btn:hover { border-color: #00C2D4; color: #00C2D4; }

/* ── Dispute / Recovery UI ────────────────────────────── */
.dvchi-dispute-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 18px; margin-bottom: 12px; }
.dvchi-dispute-status { font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 999px; display: inline-block; margin-bottom: 8px; }
.dvchi-mod-options { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.dvchi-mod-option { display: flex; align-items: flex-start; gap: 10px; padding: 10px; border: 1px solid #e5e7eb; border-radius: 8px; cursor: pointer; transition: border-color .15s; }
.dvchi-mod-option:hover { border-color: #00C2D4; }
.dvchi-mod-option input { margin-top: 2px; }
.dvchi-mod-option strong { font-size: 13px; color: #111; display: block; }
.dvchi-mod-option p { font-size: 11px; color: #9ca3af; margin: 2px 0 0; }

/* ── Reusable form bits (in case Core not loaded) ────────── */
.dvchi-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 20px; border-radius: 6px; font-size: 0.9rem; font-weight: 600; cursor: pointer; border: 2px solid transparent; transition: all .2s; text-decoration: none; }
.dvchi-btn-primary { background: #00C2D4; color: #fff; border-color: #00C2D4; }
.dvchi-btn-primary:hover { background: #0098A8; }
.dvchi-btn-outline { background: transparent; color: #00C2D4; border-color: #00C2D4; }
.dvchi-btn-outline:hover { background: #00C2D4; color: #fff; }
.dvchi-btn-sm { padding: 6px 14px; font-size: 0.8rem; }
.dvchi-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 18px; margin-bottom: 14px; }
.dvchi-form-field { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.dvchi-form-field label { font-size: 0.78rem; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: .04em; }
.dvchi-form-field input, .dvchi-form-field select, .dvchi-form-field textarea { padding: 9px 12px; border: 1.5px solid #e5e7eb; border-radius: 6px; font-family: inherit; font-size: 0.9rem; outline: none; }
.dvchi-form-field input:focus, .dvchi-form-field select:focus, .dvchi-form-field textarea:focus { border-color: #00C2D4; }
.dvchi-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.dvchi-star-select { direction: rtl; display: inline-flex; gap: 2px; }
.dvchi-star-select input { display: none; }
.dvchi-star-select label { font-size: 28px; color: #e5e7eb; cursor: pointer; }
.dvchi-star-select label:hover, .dvchi-star-select label:hover ~ label, .dvchi-star-select input:checked ~ label { color: #F59E0B; }
.dvchi-notice { padding: 12px 16px; border-radius: 8px; font-size: 0.88rem; margin-bottom: 14px; }
.dvchi-notice.success { background: #E8F8F0; color: #1A7040; border: 1px solid #6ECBA0; }
.dvchi-notice.error { background: #FEF2F2; color: #991B1B; border: 1px solid #FCA5A5; }
.dvchi-notice.info { background: #E0F9FC; color: #0C5C6B; border: 1px solid #67D8E8; }
.dvchi-login-prompt { background: #f8f8f4; border: 1px solid #e5e7eb; border-radius: 10px; padding: 20px; text-align: center; font-size: 14px; }
.dvchi-loading { color: #9ca3af; font-size: 13px; padding: 20px; text-align: center; }

@media (max-width: 600px) {
  .dvchi-form-row { grid-template-columns: 1fr; }
}

/* DVchi responsive: prevent iOS auto-zoom on input focus (>=16px on phones) */
@media (max-width: 782px) {
  .dvchi-form-field input, .dvchi-form-field select, .dvchi-form-field textarea { font-size: 16px; }
}


/* ==========================================================
   TRUST SCORE CHIP AND ADMIN (v1.1.0)
   ========================================================== */
.dvchi-tscore-chip{
    display:inline-flex;align-items:center;gap:6px;vertical-align:middle;
    padding:4px 10px;border:1.5px solid #07c5fb;border-radius:999px;
    background:#fff;font-size:12.5px;font-weight:700;line-height:1.2;
    text-decoration:none;white-space:nowrap;
}
.dvchi-tscore-chip:hover{background:#f0fbff}
.dvchi-tscore-num{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:22px;height:22px;border-radius:50%;
    background:currentColor;color:#fff!important;font-size:11.5px;font-weight:800;
}
.dvchi-tscore-label{font-weight:700}

/* Admin */
.dvchi-trust-navbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;
    margin:12px 0 20px;padding:10px 0 14px;border-bottom:1px solid #dcdcde;}
.dvchi-trust-back{display:inline-flex;align-items:center;min-height:36px;padding:6px 14px;
    border:1px solid #00C2D4;border-radius:6px;background:#00C2D4;color:#111;
    font-weight:700;text-decoration:none;}
.dvchi-trust-back:hover{background:#00aebe;color:#111}
.dvchi-trust-navlink{display:inline-flex;align-items:center;min-height:36px;padding:6px 12px;
    border:1px solid #dcdcde;border-radius:6px;background:#fff;color:#2271b1;
    text-decoration:none;font-size:13px;}
.dvchi-trust-navlink:hover{background:#f6f7f7;border-color:#8c8f94}
.dvchi-trust-navlink.is-current{background:#111;border-color:#111;color:#FFE900;font-weight:700}

.dvchi-trust-stats{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0 26px}
.dvchi-trust-stat{flex:1 1 180px;background:#fff;border:1px solid #dcdcde;border-radius:10px;
    padding:16px 18px;display:flex;flex-direction:column;gap:4px;}
.dvchi-trust-stat strong{font-size:26px;line-height:1.1;color:#111}
.dvchi-trust-stat span{color:#6b7280;font-size:13px}
.dvchi-trust-muted{color:#6b7280;font-size:12px}
.dvchi-trust-tablewrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.dvchi-trust-tablewrap table{min-width:640px}
.dvchi-trust-search{margin:0 0 18px;display:flex;gap:8px;flex-wrap:wrap}
.dvchi-trust-search input[type="search"]{min-height:36px;padding:6px 10px;font-size:14px;flex:1 1 240px;max-width:360px}

@media (max-width:782px){
    .dvchi-trust-back{width:100%;justify-content:center;min-height:44px}
    .dvchi-trust-navlink{min-height:44px;flex:1 1 46%;justify-content:center}
    .dvchi-trust-stat{flex:1 1 100%}
    .dvchi-trust-search input[type="search"]{max-width:100%}
}


/* ==========================================================
   DEVICE PASS (v1.3.0 / v1.1.1)
   Same rules applied across the DVchi front end so behaviour
   is consistent between plugins on every screen size.
   ========================================================== */
.dvchi-tg-modal-box,.dvchi-review-wrap,.dvchi-trust-card{
    max-width:100%;box-sizing:border-box;}
.dvchi-tg-modal-box{max-height:min(88vh,900px);overflow:auto;}

@supports (padding:max(0px)){
    .dvchi-tg-modal{
        padding-left:max(16px,env(safe-area-inset-left));
        padding-right:max(16px,env(safe-area-inset-right));
        padding-bottom:max(16px,env(safe-area-inset-bottom));}
}

/* Wide tables scroll in their own box */
.dvchi-tg-tablewrap,.dvchi-trust-tablewrap{
    width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}

@media (max-width:600px){
    /* 16px stops iOS zooming the page when a field takes focus */
    .dvchi-tg-modal input,.dvchi-tg-modal select,.dvchi-tg-modal textarea,
    .dvchi-review-wrap input,.dvchi-review-wrap select,.dvchi-review-wrap textarea{
        font-size:16px!important;}

    /* 44px minimum touch targets */
    .dvchi-tg-btn,.dvchi-tg-modal button,.dvchi-review-wrap button{min-height:44px;}

    .dvchi-tg-modal-box{padding:18px;border-radius:12px;}
    .dvchi-trust-card{padding:16px;}
    .dvchi-tscore-chip{font-size:12px;}
}

@media (prefers-reduced-motion:reduce){
    .dvchi-tg-modal *,.dvchi-trust-card *{
        animation-duration:.01ms!important;transition-duration:.01ms!important;}
}

.dvchi-tscore-pre{font-size:12px;font-weight:800;letter-spacing:.01em;
    opacity:.9;white-space:nowrap;}


/* ==========================================================
   LISTING REVIEW SECTION (v1.2.0)
   ========================================================== */
.dvchi-reviews-section{
    margin:36px 0 0;padding:26px 0 0;border-top:2px solid #e5e7eb;
    max-width:100%;box-sizing:border-box;}
.dvchi-reviews-h{margin:0 0 20px;font-size:24px;font-weight:800;}

.dvchi-review-summary{
    display:flex;gap:28px;flex-wrap:wrap;align-items:center;
    background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;
    padding:22px;margin-bottom:24px;}
.dvchi-review-avg{
    flex:0 0 auto;text-align:center;min-width:140px;
    display:flex;flex-direction:column;align-items:center;gap:2px;}
.dvchi-review-avg-num{font-size:46px;font-weight:800;line-height:1;color:#111;}
.dvchi-review-avg-out{font-size:12.5px;color:#6b7280;}
.dvchi-review-avg-stars{margin:6px 0 2px;font-size:18px;color:#f59e0b;}
.dvchi-review-count{font-size:13.5px;color:#6b7280;font-weight:600;}

.dvchi-review-dist{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:7px;}
.dvchi-review-dist-row{display:flex;align-items:center;gap:10px;font-size:13px;}
.dvchi-dist-label{flex:0 0 52px;color:#6b7280;white-space:nowrap;}
.dvchi-dist-bar{
    flex:1 1 auto;height:9px;background:#e5e7eb;border-radius:999px;overflow:hidden;min-width:0;}
.dvchi-dist-bar > span{display:block;height:100%;background:#07c5fb;border-radius:999px;}
.dvchi-dist-n{flex:0 0 28px;text-align:right;color:#374151;font-weight:700;}

.dvchi-review-gate{
    background:#f0fbff;border:1px solid #bae8fb;border-radius:10px;
    padding:16px 18px;margin-bottom:24px;font-size:14.5px;line-height:1.6;color:#0c4a60;}
.dvchi-review-gate p{margin:0;}
.dvchi-review-gate a{color:#0369a1;font-weight:700;}

.dvchi-reviews-listwrap{margin-top:8px;}
.dvchi-no-reviews{color:#6b7280;font-style:italic;padding:18px 0;}

@media (max-width:600px){
    .dvchi-reviews-section{margin-top:28px;padding-top:20px;}
    .dvchi-reviews-h{font-size:20px;}
    .dvchi-review-summary{gap:18px;padding:18px;}
    .dvchi-review-avg{min-width:0;flex:1 1 100%;}
    .dvchi-review-avg-num{font-size:38px;}
    .dvchi-review-dist{flex:1 1 100%;}
}


/* ══════════════════════════════════════════════════════════
   v1.3.0 REVIEW LAYOUT AND Q&A

   The write-a-review form previously flowed inline, so labels,
   inputs and textareas wrapped into each other. It is now a
   proper stacked form, and each review is a self contained card.
   ══════════════════════════════════════════════════════════ */
.dvchi-review-form,.dvchi-review-form-full{
    display:block!important;background:#f9fafb;border:1px solid #e5e7eb;
    border-radius:12px;padding:22px;margin:0 0 24px;}
.dvchi-review-form h3,.dvchi-review-form-full h3,
.dvchi-review-form > strong,.dvchi-review-form-full > strong{
    display:block;margin:0 0 16px;font-size:18px;font-weight:800;}
.dvchi-review-form label,.dvchi-review-form-full label{
    display:block!important;margin:16px 0 6px;font-weight:700;font-size:14px;
    color:#374151;width:auto!important;float:none!important;}
.dvchi-review-form input[type="text"],
.dvchi-review-form input[type="url"],
.dvchi-review-form textarea,
.dvchi-review-form-full input[type="text"],
.dvchi-review-form-full input[type="url"],
.dvchi-review-form-full textarea{
    display:block!important;width:100%!important;max-width:100%!important;
    float:none!important;margin:0!important;box-sizing:border-box;
    padding:11px 13px;border:1px solid #d1d5db;border-radius:9px;
    font-size:15px;font-family:inherit;}
.dvchi-review-form textarea,.dvchi-review-form-full textarea{min-height:110px;resize:vertical;}
.dvchi-review-form button[type="submit"],.dvchi-review-form-full button[type="submit"],
.dvchi-review-form .button,.dvchi-review-form-full .button{
    margin-top:18px!important;min-height:48px;padding:12px 26px;
    font-size:16px;font-weight:700;border-radius:9px;
    background:#07c5fb;border:0;color:#fff;cursor:pointer;float:none!important;}

/* Review cards */
.dvchi-reviews-list{display:flex;flex-direction:column;gap:16px;}
.dvchi-review-item{
    background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;}
.dvchi-review-head{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.dvchi-reviewer-avatar{border-radius:50%;flex:0 0 auto;width:42px;height:42px;}
.dvchi-reviewer-info{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:2px;}
.dvchi-reviewer-info strong{font-size:15.5px;}
.dvchi-reviewer-info span{font-size:12.5px;color:#6b7280;}
.dvchi-review-stars{flex:0 0 auto;font-size:16px;letter-spacing:1px;}
.dvchi-review-title{display:block;font-size:16px;margin-bottom:6px;}
.dvchi-review-body{margin:0 0 12px;line-height:1.65;}
.dvchi-review-photos{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.dvchi-review-photos img{width:104px;height:104px;object-fit:cover;border-radius:9px;}
.dvchi-review-actions{display:flex;gap:8px;flex-wrap:wrap;padding-top:12px;border-top:1px solid #f3f4f6;}
.dvchi-helpful-btn,.dvchi-review-report{
    background:#fff;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;
    min-height:40px;padding:8px 14px;font-size:13.5px;font-weight:700;color:#374151;}
.dvchi-helpful-btn:hover{border-color:#07c5fb;color:#111;}
.dvchi-review-report:hover{border-color:#b91c1c;color:#b91c1c;}
.dvchi-review-reply{
    margin-top:14px;padding:14px 16px;background:#f9fafb;
    border-left:3px solid #07c5fb;border-radius:0 9px 9px 0;}
.dvchi-review-reply strong{display:block;margin-bottom:5px;font-size:14px;}
.dvchi-review-reply p{margin:0;font-size:14.5px;line-height:1.6;}

/* Questions and comments */
.dvchi-rc{margin-top:12px;border-top:1px solid #f3f4f6;padding-top:10px;}
.dvchi-rc-toggle{
    background:none;border:0;cursor:pointer;padding:6px 0;
    font-size:13.5px;font-weight:700;color:#07c5fb;}
.dvchi-rc-toggle:hover{text-decoration:underline;}
.dvchi-rc-panel[hidden]{display:none;}
.dvchi-rc-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;}
.dvchi-rc-list li{display:flex;gap:10px;align-items:flex-start;}
.dvchi-rc-list img{border-radius:50%;flex:0 0 auto;}
.dvchi-rc-list strong{font-size:14px;}
.dvchi-rc-when{font-size:12px;color:#6b7280;margin-left:8px;}
.dvchi-rc-list p{margin:3px 0 0;font-size:14.5px;line-height:1.6;}
.dvchi-rc-form{display:flex;gap:8px;margin-top:14px;align-items:flex-start;}
.dvchi-rc-input{
    flex:1 1 auto;min-width:0;padding:10px 12px;border:1px solid #d1d5db;
    border-radius:9px;font-size:15px;font-family:inherit;resize:vertical;}
.dvchi-rc-send{flex:0 0 auto;min-height:44px;padding:10px 20px;font-weight:700;}
.dvchi-rc-login{margin:12px 0 0;font-size:14px;color:#6b7280;}
.dvchi-rc-login a{color:#07c5fb;font-weight:700;}
.dvchi-rc-msg{margin-top:8px;font-size:13.5px;}
.dvchi-rc-msg.is-error{color:#b91c1c;font-weight:600;}

@media (max-width:600px){
    .dvchi-review-item{padding:16px;}
    .dvchi-review-stars{flex:1 1 100%;}
    .dvchi-rc-form{flex-wrap:wrap;}
    .dvchi-rc-input{flex:1 1 100%;font-size:16px;}
    .dvchi-rc-send{flex:1 1 100%;}
    .dvchi-review-form input,.dvchi-review-form textarea,
    .dvchi-review-form-full input,.dvchi-review-form-full textarea{font-size:16px;}
}


/* Write a review call to action (v1.5.0) */
.dvchi-review-cta{
    display:flex;align-items:center;gap:14px;flex-wrap:wrap;
    background:#f0fbff;border:1px solid #d6f2fd;border-radius:12px;
    padding:18px 20px;margin:0 0 24px;}
.dvchi-review-cta .dvchi-btn{
    min-height:50px;padding:13px 26px;font-size:16px;font-weight:700;
    border-radius:9px;background:#07c5fb;border:0;color:#fff;cursor:pointer;}
.dvchi-review-cta .dvchi-btn:hover{background:#03b4e8;}
.dvchi-review-cta-note{font-size:14px;color:#0c4a60;}

@media (max-width:600px){
    .dvchi-review-cta{padding:14px;}
    .dvchi-review-cta .dvchi-btn{width:100%;justify-content:center;}
    .dvchi-review-cta-note{flex:1 1 100%;}
}

/* ══════════════════════════════════════════════════════════════
   v1.6.0  Review media strip and viewer

   Appended at the very end deliberately. This stylesheet already
   carries two separate .dvchi-review-photos blocks (around line 41
   and line 310) that set different tile sizes, and equal specificity
   rules win by document position. Anything added above them would
   silently lose. The duplication itself is left alone here; that is
   a consolidation pass, not this change.
════════════════════════════════════════════════════════════════ */
.dvchi-review-media{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin:0 0 12px;
}
.dvchi-review-media .dvchi-rmedia{
    position:relative;
    display:block;
    width:104px;
    height:104px;
    padding:0;
    border:1px solid #e5e7eb;
    border-radius:9px;
    overflow:hidden;
    background:#f3f4f6;
    cursor:pointer;
    flex:0 0 auto;
    /* 44px minimum touch target is comfortably exceeded at 104px */
}
.dvchi-review-media .dvchi-rmedia:hover,
.dvchi-review-media .dvchi-rmedia:focus-visible{
    border-color:#07c5fb;
    outline:none;
    box-shadow:0 0 0 3px rgba(7,197,251,.28);
}
.dvchi-review-media .dvchi-rmedia img,
.dvchi-review-media .dvchi-rmedia video{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
    border-radius:0;
    pointer-events:none;
}
.dvchi-rmedia-play{
    position:absolute;
    left:50%;
    top:50%;
    width:34px;
    height:34px;
    margin:-17px 0 0 -17px;
    border-radius:50%;
    background:rgba(17,17,17,.62);
    pointer-events:none;
}
.dvchi-rmedia-play::after{
    content:'';
    position:absolute;
    left:13px;
    top:10px;
    border-style:solid;
    border-width:7px 0 7px 11px;
    border-color:transparent transparent transparent #fff;
}

/* Viewer overlay */
.dvchi-rmedia-view{
    position:fixed;
    inset:0;
    z-index:100000;
    background:rgba(17,17,17,.88);
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right))
            max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));
}
.dvchi-rmedia-view img,
.dvchi-rmedia-view video{
    max-width:100%;
    max-height:100%;
    border-radius:10px;
    display:block;
    background:#000;
}
.dvchi-rmedia-close{
    position:absolute;
    top:12px;
    right:12px;
    min-width:44px;
    min-height:44px;
    border:0;
    border-radius:10px;
    background:rgba(255,255,255,.92);
    color:#111;
    font-size:22px;
    line-height:1;
    font-weight:700;
    cursor:pointer;
}
.dvchi-rmedia-close:hover{background:#fff;}

@media (max-width:782px){
    .dvchi-review-media .dvchi-rmedia{width:88px;height:88px;}
    .dvchi-rmedia-view{padding:12px;}
}
@media (max-width:480px){
    .dvchi-review-media .dvchi-rmedia{width:78px;height:78px;}
}

/* ══════════════════════════════════════════════════════════════
   v1.7.1  Review comment composer

   One bordered box holding the textarea, the attachment previews and
   a tools row. The picker lives behind an Attach button rather than
   sitting beside the textarea, which previously took roughly half the
   available width.
════════════════════════════════════════════════════════════════ */
/* The pre-existing rule at the top of this file is
       .dvchi-rc-form{display:flex}
   written when the textarea and the Post button were siblings. Wrapping them
   in .dvchi-rc-composer turned that wrapper into a single flex item with no
   basis, so it shrank to the width of its content and the box collapsed to
   roughly a third of the column. Reverting the parent to block is the fix;
   the composer then fills the width as it did before. */
.dvchi-rc-form{
    display:block;
    margin-top:14px;
}
.dvchi-rc-composer{
    width:100%;
    box-sizing:border-box;
    border:1px solid #d1d5db;
    border-radius:12px;
    background:#fff;
    padding:10px;
    transition:border-color .12s ease, box-shadow .12s ease;
}
.dvchi-rc-composer *,
.dvchi-rc-composer *::before,
.dvchi-rc-composer *::after{box-sizing:border-box;}
.dvchi-rc-composer:focus-within{
    border-color:#07c5fb;
    box-shadow:0 0 0 3px rgba(7,197,251,.18);
}
.dvchi-rc-composer .dvchi-rc-input{
    width:100%;
    max-width:100%;
    display:block;
    /* flex:1 1 auto from the older rule is inert here, but the border and
       radius are not, and a boxed input inside a boxed composer reads as a
       double frame. */
    flex:none;
    border:0!important;
    border-radius:0!important;
    outline:none!important;
    box-shadow:none!important;
    background:transparent;
    resize:vertical;
    min-height:76px;
    padding:2px 2px 6px;
    /* 16px keeps iOS Safari from zooming the page on focus */
    font-size:16px;
    line-height:1.5;
    font-family:inherit;
    color:#111;
}
.dvchi-rc-composer .dvchi-rc-input:focus{border:0!important;box-shadow:none!important;}

.dvchi-rc-tools{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:8px;
    padding-top:8px;
    border-top:1px solid #f1f3f5;
}
/* The 600px breakpoint further up sets .dvchi-rc-send{flex:1 1 100%} so the
   button filled the row in the old stacked layout. Inside the tools row that
   would push Attach onto its own line. Two classes beat one, media query or
   not. */
.dvchi-rc-tools .dvchi-rc-send{
    flex:0 0 auto;
    width:auto;
    min-height:44px;
    padding:10px 22px;
}

/* ── Attach control ─────────────────────────────────────── */
.dvchi-rc-attach{position:relative;}
.dvchi-rc-attach-btn{
    display:inline-flex;
    align-items:center;
    gap:6px;
    min-height:40px;
    padding:8px 12px;
    border:1px solid #d1d5db;
    border-radius:8px;
    background:#fff;
    color:#374151;
    font-size:13.5px;
    font-weight:700;
    cursor:pointer;
}
.dvchi-rc-attach-btn:hover{border-color:#07c5fb;color:#111;}
.dvchi-rc-attach-btn[aria-expanded="true"]{
    border-color:#07c5fb;
    background:#f2fbff;
    color:#111;
}
.dvchi-rc-clip{font-size:15px;line-height:1;}

.dvchi-rc-menu{
    position:absolute;
    left:0;
    bottom:calc(100% + 6px);
    z-index:50;
    min-width:210px;
    display:flex;
    flex-direction:column;
    gap:4px;
    padding:6px;
    background:#fff;
    border:1px solid #d1d5db;
    border-radius:10px;
    box-shadow:0 10px 28px rgba(17,17,17,.16);
}
.dvchi-rc-menu[hidden]{display:none;}
.dvchi-rc-menu .dvchi-ap-pick{
    display:flex;
    align-items:center;
    gap:8px;
    width:100%;
    min-height:44px;
    padding:10px 12px;
    margin:0;
    border:0;
    border-radius:8px;
    background:#fff;
    color:#374151;
    font-size:14px;
    font-weight:600;
    text-align:left;
    cursor:pointer;
}
.dvchi-rc-menu .dvchi-ap-pick:hover{background:#f2fbff;color:#111;}
.dvchi-rc-menu .dvchi-ap-pick input[type="file"]{
    position:absolute;
    width:1px;height:1px;
    opacity:0;
    overflow:hidden;
    clip:rect(0 0 0 0);
}

/* ── Selected file chips ────────────────────────────────── */
.dvchi-rc-composer .dvchi-ap-preview{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
}
.dvchi-rc-composer .dvchi-ap-preview:not(:empty){margin:4px 0 8px;}
.dvchi-rc-composer .dvchi-ap-chip{
    display:inline-flex;
    align-items:center;
    gap:6px;
    max-width:100%;
    padding:6px 6px 6px 10px;
    border-radius:999px;
    background:#eef2f5;
    font-size:12.5px;
    color:#374151;
    overflow-wrap:anywhere;
}
.dvchi-rc-composer .dvchi-ap-chip button{
    border:0;
    background:none;
    cursor:pointer;
    font-size:16px;
    line-height:1;
    color:#6b7280;
    min-width:24px;
    min-height:24px;
}
.dvchi-rc-composer .dvchi-ap-chip button:hover{color:#b91c1c;}

/* Comment media tiles sit smaller than review tiles so a thread does not
   read as louder than the review it hangs off. */
.dvchi-review-media.dvchi-rc-media{margin:6px 0 0;}
.dvchi-review-media.dvchi-rc-media .dvchi-rmedia{width:72px;height:72px;}

/* ══════════════════════════════════════════════════════════════
   Responsive pass, v1.7.1

   Tested against the widths that matter here: 1440 desktop, 1024
   tablet landscape, 768 tablet portrait, 430 and 390 phone, and
   320 for the smallest phone still in use.

   The composer stays one full width box at every size. Only the
   Attach label, the tile sizes and the menu width change.
════════════════════════════════════════════════════════════════ */
@media (max-width:1024px){
    .dvchi-rc-composer{padding:9px;}
}

@media (max-width:782px){
    /* Menu is anchored to the button, so it must never be wider than the
       viewport minus the gutters or it will cause horizontal scroll. */
    .dvchi-rc-menu{
        min-width:0;
        width:max-content;
        max-width:calc(100vw - 56px);
    }
    .dvchi-rc-menu .dvchi-ap-pick{font-size:15px;}
    .dvchi-review-media.dvchi-rc-media .dvchi-rmedia{width:64px;height:64px;}
    .dvchi-rc-list li{gap:8px;}
}

@media (max-width:600px){
    /* Label collapses to the clip icon, kept for screen readers. */
    .dvchi-rc-attach-lbl{
        position:absolute;
        width:1px;height:1px;
        margin:-1px;
        overflow:hidden;
        clip:rect(0 0 0 0);
        white-space:nowrap;
    }
    .dvchi-rc-attach-btn{padding:8px 16px;}
    .dvchi-rc-composer .dvchi-rc-input{min-height:88px;}
    .dvchi-rc-tools .dvchi-rc-send{padding:10px 18px;}
}

@media (max-width:380px){
    /* At this width Attach and Post together can exceed the row, so the
       wrap on .dvchi-rc-tools takes over and each gets its own line. */
    .dvchi-rc-attach,
    .dvchi-rc-tools .dvchi-rc-send{flex:1 1 100%;}
    .dvchi-rc-attach-btn{width:100%;justify-content:center;}
    .dvchi-rc-tools .dvchi-rc-send{width:100%;}
    .dvchi-rc-menu{left:0;right:0;width:auto;max-width:none;}
    .dvchi-review-media.dvchi-rc-media .dvchi-rmedia{width:58px;height:58px;}
}

/* Notched phones: the menu opens upward, so the risk is the top inset when a
   thread sits near the top of the viewport. */
@supports (padding:max(0px)){
    @media (max-width:600px){
        .dvchi-rc-menu{margin-top:max(0px, env(safe-area-inset-top));}
    }
}

@media (prefers-reduced-motion:reduce){
    .dvchi-rc-composer{transition:none;}
}

/* ── v1.8.0  Public posting notice inside the comment composer ────
   The shared .dvchi-post-notice styling lives in DVchi Core. Only the
   spacing differs here, because the notice sits inside a bordered
   composer rather than loose in a dialog. A minimal fallback is
   included so the notice still reads as a notice if Core's stylesheet
   is not present.                                                    */
.dvchi-rc-composer .dvchi-post-notice{
    margin:2px 0 8px;
    font-size:13px;
    padding:9px 11px;
}
.dvchi-rc-composer .dvchi-post-notice:not([class*="dvchi-post-notice-"]),
.dvchi-review-form .dvchi-post-notice{margin:12px 0;}

/* Fallback only. If Core is active its rules land later in the page and win. */
.dvchi-post-notice{
    display:flex;
    align-items:flex-start;
    gap:8px;
    border:1px solid #ffe08a;
    border-left:4px solid #FFE900;
    border-radius:9px;
    background:#fffbe8;
    color:#3f3a12;
    line-height:1.5;
    overflow-wrap:anywhere;
}
.dvchi-post-notice-ico{flex:0 0 auto;}
.dvchi-post-notice a{color:#0b6b7a;font-weight:700;text-decoration:underline;}

@media (max-width:600px){
    .dvchi-rc-composer .dvchi-post-notice{font-size:12.5px;padding:9px 10px;}
}

/* ══════════════════════════════════════════════════════════════
   v1.9.0  Delivery confirmation cards
════════════════════════════════════════════════════════════════ */
.dvchi-fulfil{display:flex;flex-direction:column;gap:14px;max-width:100%;}
.dvchi-fulfil-none,.dvchi-fulfil-gate{
    padding:18px;border:1px dashed #d1d5db;border-radius:12px;
    color:#6b7280;font-size:15px;text-align:center;}
.dvchi-fulfil-gate a{color:#07c5fb;font-weight:700;}

.dvchi-fulfil-card{
    border:1px solid #e5e7eb;border-radius:12px;background:#fff;
    padding:16px;box-sizing:border-box;}
.dvchi-fulfil-card.dvchi-fulfil-pending{border-left:4px solid #FFE900;}
.dvchi-fulfil-card.dvchi-fulfil-not_received{border-left:4px solid #b91c1c;}
.dvchi-fulfil-card.dvchi-fulfil-received,
.dvchi-fulfil-card.dvchi-fulfil-auto_released{border-left:4px solid #00C2D4;}

.dvchi-fulfil-head{
    display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;
    justify-content:space-between;margin-bottom:6px;}
.dvchi-fulfil-head strong{font-size:16px;}
.dvchi-fulfil-date{font-size:13px;color:#6b7280;}
.dvchi-fulfil-items{margin:0 0 10px;font-size:14.5px;color:#374151;overflow-wrap:anywhere;}
.dvchi-fulfil-ask{margin:0 0 4px;font-size:15.5px;font-weight:700;color:#111;}
.dvchi-fulfil-deadline{margin:0 0 12px;font-size:13.5px;color:#8a6d00;line-height:1.5;}
.dvchi-fulfil-state{margin:0;font-size:14px;color:#374151;}

.dvchi-fulfil-actions{display:flex;flex-wrap:wrap;gap:8px;}
.dvchi-fulfil-actions .dvchi-btn{min-height:44px;padding:11px 18px;font-weight:700;}
.dvchi-fulfil-no{background:#fff;border:1px solid #d1d5db;color:#374151;}
.dvchi-fulfil-no:hover{border-color:#b91c1c;color:#b91c1c;}

.dvchi-fulfil-noteform{margin-top:12px;}
.dvchi-fulfil-noteform[hidden]{display:none;}
.dvchi-fulfil-noteform label{display:block;font-size:13.5px;color:#374151;margin-bottom:6px;}
.dvchi-fulfil-note{
    width:100%;box-sizing:border-box;padding:10px 12px;
    border:1px solid #d1d5db;border-radius:9px;
    font-size:16px;font-family:inherit;resize:vertical;margin-bottom:8px;}
.dvchi-fulfil-note:focus{outline:none;border-color:#07c5fb;box-shadow:0 0 0 3px rgba(7,197,251,.2);}

.dvchi-fulfil-review{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.dvchi-fulfil-review .dvchi-btn{min-height:44px;padding:11px 16px;}
.dvchi-fulfil-msg{margin-top:10px;font-size:14px;color:#065f46;}
.dvchi-fulfil-msg.is-error{color:#b91c1c;font-weight:600;}

@media (max-width:600px){
    .dvchi-fulfil-card{padding:14px;}
    .dvchi-fulfil-actions .dvchi-btn,
    .dvchi-fulfil-review .dvchi-btn{flex:1 1 100%;justify-content:center;text-align:center;}
}

/* v1.10.0: the Delivered, awaiting confirmation status in the Dokan
   vendor order list. Yellow because it is an action state, not a
   finished one. */
.dokan-dashboard .dvchi-delivered,
mark.dvchi-delivered,
.order-status.dvchi-delivered{
    background:#FFE900!important;
    color:#111!important;
    font-weight:700;
}

/* v1.11.0: a card arrived at from an email button */
.dvchi-fulfil-card.is-armed{
    border-color:#07c5fb;
    box-shadow:0 0 0 3px rgba(7,197,251,.2);
}
.dvchi-fulfil-armed{
    margin:0 0 10px;
    padding:9px 11px;
    border-radius:8px;
    background:#f2fbff;
    border-left:4px solid #07c5fb;
    font-size:13.5px;
    line-height:1.5;
    color:#0b4a57;
}

/* v1.12.0: sections and a clearer review prompt */
.dvchi-fulfil-head2{
    margin:6px 0 0;
    font-size:15px;
    font-weight:800;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:#6b7280;
}
.dvchi-fulfil-reviewask{
    flex:1 1 100%;
    margin:0 0 4px;
    font-size:14.5px;
    line-height:1.55;
    color:#374151;
}
.dvchi-fulfil-review-none p{
    margin:0;
    font-size:14px;
    color:#6b7280;
}

/* ══════════════════════════════════════════════════════════════
   v1.13.0  Upload progress and the gallery viewer
════════════════════════════════════════════════════════════════ */

/* Progress inside the comment composer */
.dvchi-rc-progress{margin:4px 0 8px;}
.dvchi-rc-progress[hidden]{display:none;}
.dvchi-rc-bar{
    height:8px;
    border-radius:999px;
    background:#e9edf1;
    overflow:hidden;
}
.dvchi-rc-bar span{
    display:block;
    height:100%;
    width:0;
    border-radius:999px;
    background:#07c5fb;
    transition:width .2s ease;
}
.dvchi-rc-progtxt{
    margin:6px 0 0;
    font-size:12.5px;
    line-height:1.5;
    color:#5b6472;
    overflow-wrap:anywhere;
}
@media (prefers-reduced-motion:reduce){
    .dvchi-rc-bar span{transition:none;}
}

/* Viewer: stage, arrows and counter */
.dvchi-rmedia-stage{
    display:flex;
    align-items:center;
    justify-content:center;
    max-width:100%;
    max-height:100%;
}
.dvchi-rmedia-stage img,
.dvchi-rmedia-stage video{
    max-width:100%;
    max-height:100%;
    border-radius:10px;
    display:block;
    background:#000;
}
.dvchi-rmedia-nav{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    width:52px;
    height:52px;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.9);
    color:#111;
    font-size:30px;
    line-height:1;
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0;
}
.dvchi-rmedia-nav:hover{background:#fff;}
.dvchi-rmedia-prev{left:12px;}
.dvchi-rmedia-next{right:12px;}
.dvchi-rmedia-count{
    position:absolute;
    bottom:14px;
    left:50%;
    transform:translateX(-50%);
    padding:5px 12px;
    border-radius:999px;
    background:rgba(17,17,17,.72);
    color:#fff;
    font-size:13px;
    font-weight:700;
}

@media (max-width:600px){
    /* Arrows move to the bottom corners so they are reachable with a thumb
       and do not sit over the middle of the photo. Swipe also works. */
    .dvchi-rmedia-nav{
        top:auto;
        bottom:12px;
        transform:none;
        width:48px;
        height:48px;
        font-size:26px;
    }
    .dvchi-rmedia-prev{left:16px;}
    .dvchi-rmedia-next{right:16px;}
    .dvchi-rmedia-count{bottom:26px;}
    .dvchi-rmedia-close{top:10px;right:10px;}
}

/* ══════════════════════════════════════════════════════════════
   v1.15.0  Comment authorship, edit marker and own-comment controls
════════════════════════════════════════════════════════════════ */
.dvchi-rc-author{
    display:flex;
    align-items:center;
    gap:8px;
    text-decoration:none;
    color:inherit;
    flex:0 0 auto;
}
.dvchi-rc-author strong{font-size:14px;color:#111;}
.dvchi-rc-author:hover strong{color:#07c5fb;text-decoration:underline;}
.dvchi-rc-author img{border-radius:50%;display:block;}

.dvchi-rc-edited{
    display:inline-block;
    margin-left:8px;
    font-size:12px;
    font-style:italic;
    color:#8a8f98;
    cursor:help;
}

.dvchi-rc-own{
    display:flex;
    gap:6px;
    margin-top:6px;
}
.dvchi-rc-own[hidden]{display:none;}
.dvchi-rc-own button{
    border:0;
    background:none;
    padding:6px 2px;
    min-height:32px;
    font-size:13px;
    font-weight:700;
    color:#6b7280;
    cursor:pointer;
}
.dvchi-rc-own button:hover{color:#07c5fb;}
.dvchi-rc-own .dvchi-rc-del:hover{color:#b91c1c;}

.dvchi-rc-editbox{margin-top:8px;}
.dvchi-rc-editbox[hidden]{display:none;}
.dvchi-rc-edittext{
    width:100%;
    box-sizing:border-box;
    min-height:76px;
    padding:10px 12px;
    border:1px solid #d1d5db;
    border-radius:10px;
    /* 16px stops iOS zooming the page when the field is focused. */
    font-size:16px;
    line-height:1.5;
    font-family:inherit;
    resize:vertical;
}
.dvchi-rc-edittext:focus{
    outline:none;
    border-color:#07c5fb;
    box-shadow:0 0 0 3px rgba(7,197,251,.2);
}
.dvchi-rc-editnote{
    margin:6px 0 8px;
    font-size:12.5px;
    line-height:1.5;
    color:#6b7280;
}
.dvchi-rc-editacts{
    display:flex;
    gap:8px;
    justify-content:flex-end;
    flex-wrap:wrap;
}
.dvchi-rc-editacts button{min-height:44px;padding:10px 18px;}
.dvchi-rc-editcancel{
    border:1px solid #d1d5db;
    background:#fff;
    border-radius:10px;
    font-weight:700;
    color:#374151;
    cursor:pointer;
}
.dvchi-rc-editcancel:hover{border-color:#07c5fb;color:#111;}

@media (max-width:600px){
    .dvchi-rc-editacts button{flex:1 1 100%;}
}

/* v1.16.0: reviewer avatar and name link to the member profile. */
.dvchi-reviewer-link{display:inline-block;line-height:0;flex:0 0 auto;}
.dvchi-reviewer-name{text-decoration:none;color:inherit;}
.dvchi-reviewer-name:hover strong{color:#07c5fb;text-decoration:underline;}

/* ══════════════════════════════════════════════════════════════
   v1.18.0  Editing a comment in place

   The edit box no longer prints its own copy of the attachments. The strip
   already sitting above the box grows a cross on each tile while the box is
   open, so there is one row of media on screen instead of two and the cross
   is on the exact item it removes.

   .dvchi-rc-cell is added by trust.js around each tile and taken off again
   on cancel or save, so nothing here applies outside edit mode.
════════════════════════════════════════════════════════════════ */
.dvchi-rc-cell{position:relative;display:inline-block;line-height:0;}
.dvchi-rc-media.is-editing{
    padding:6px;
    border:1px dashed #cbd5e1;
    border-radius:10px;
    background:#fafafa;
}
.dvchi-rc-keepx{
    position:absolute;
    top:2px;
    right:2px;
    width:24px;
    height:24px;
    border:0;
    border-radius:50%;
    background:rgba(17,17,17,.72);
    color:#fff;
    font-size:16px;
    line-height:1;
    cursor:pointer;
    padding:0;
    z-index:2;
}
.dvchi-rc-keepx:hover{background:#b91c1c;}
/* Staged for removal, not yet gone. Cancel puts it back. */
.dvchi-rc-cell.is-gone .dvchi-rmedia{opacity:.35;}
.dvchi-rc-cell.is-gone::after{
    content:'';
    position:absolute;
    inset:0;
    pointer-events:none;
    background:
      linear-gradient(to top left, transparent 47%, #b91c1c 47%, #b91c1c 53%, transparent 53%);
}
.dvchi-rc-cell.is-gone .dvchi-rc-keepx{background:#b91c1c;}

/* ── The field itself ───────────────────────────────────────────
   The two pickers sit inside the field rather than in a row of wide buttons
   underneath it, matching the community composer. The whole field takes the
   focus ring, so the icons read as part of the box.
─────────────────────────────────────────────────────────────── */
.dvchi-rc-editfield{
    margin:8px 0;
    padding:10px;
    border:1px solid #d1d5db;
    border-radius:12px;
    background:#fff;
    transition:border-color .12s ease, box-shadow .12s ease;
}
.dvchi-rc-editfield *,
.dvchi-rc-editfield *::before,
.dvchi-rc-editfield *::after{box-sizing:border-box;}
.dvchi-rc-editfield:focus-within{
    border-color:#07c5fb;
    box-shadow:0 0 0 3px rgba(7,197,251,.16);
}
.dvchi-rc-editfield .dvchi-rc-edittext{
    width:100%;
    margin:0;
    padding:0;
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
    background:transparent;
    resize:vertical;
    /* 16px stops iOS zooming the page when the field takes focus. */
    font-size:16px;
    line-height:1.45;
    color:#111;
}
.dvchi-rc-editfield .dvchi-rc-edittext:focus{border:0!important;box-shadow:none!important;}
.dvchi-rc-editfield .dvchi-ap-preview{display:flex;flex-wrap:wrap;gap:6px;}
.dvchi-rc-editfield .dvchi-ap-preview:not(:empty){margin:6px 0;}
.dvchi-rc-editfield .dvchi-ap-chip{
    display:inline-flex;
    align-items:center;
    gap:6px;
    max-width:100%;
    padding:5px 8px;
    border:1px solid #e5e7eb;
    border-radius:999px;
    background:#f9fafb;
    font-size:12.5px;
    color:#374151;
    overflow-wrap:anywhere;
}
.dvchi-rc-editfield .dvchi-ap-chip button{
    border:0;
    background:none;
    color:#6b7280;
    font-size:15px;
    line-height:1;
    cursor:pointer;
    padding:0 2px;
}
.dvchi-rc-editfield .dvchi-ap-chip button:hover{color:#b91c1c;}
.dvchi-rc-editfield .dvchi-ap-msg{font-size:12.5px;color:#6b7280;}
.dvchi-rc-editfield .dvchi-ap-msg:not(:empty){margin-top:6px;}
.dvchi-rc-editfield .dvchi-ap-msg.is-error{color:#b91c1c;font-weight:700;}

.dvchi-rc-edittools{display:flex;align-items:center;gap:6px;margin-top:6px;}
.dvchi-rc-ebtn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    /* 44px keeps the icon a real touch target on a phone even though the
       glyph inside it is 18px. */
    width:44px;
    height:44px;
    padding:0;
    border:1px solid transparent;
    border-radius:10px;
    background:transparent;
    color:#6b7280;
    cursor:pointer;
}
.dvchi-rc-ebtn:hover{background:#f2fbff;border-color:#07c5fb;color:#111;}
.dvchi-rc-ebtn[aria-expanded="true"]{background:#e8f8ff;border-color:#07c5fb;color:#111;}
.dvchi-rc-editattach .dvchi-rc-menu{top:calc(100% + 6px);bottom:auto;}

/* ── Save button with a spinner ────────────────────────────────
   Saving an edit with no attachment used to change nothing but the button
   label, which on a slow connection read as a dead button.
─────────────────────────────────────────────────────────────── */
.dvchi-rc-editsave{display:inline-flex;align-items:center;gap:8px;}
.dvchi-spin{
    display:none;
    width:14px;
    height:14px;
    border:2px solid rgba(255,255,255,.45);
    border-top-color:#fff;
    border-radius:50%;
    animation:dvchi-spin .7s linear infinite;
}
.dvchi-rc-editsave.is-busy .dvchi-spin{display:inline-block;}
.dvchi-rc-editsave.is-busy{opacity:.85;cursor:progress;}
@keyframes dvchi-spin{to{transform:rotate(360deg);}}

.dvchi-rc-editprog{margin:6px 0 8px;}
.dvchi-rc-editprog[hidden]{display:none;}

/* The attachment marker reads slightly differently from the text one so the
   two are distinguishable at a glance. */
.dvchi-rc-medited{color:#7a6a45;}

/* ══════════════════════════════════════════════════════════════
   v1.18.0  Delete with a short undo

   The row is hidden the moment the request returns. Everything inside it is
   collapsed and the undo bar takes its place, so the thread does not jump
   twice: once on delete and again when the window closes.
════════════════════════════════════════════════════════════════ */
.dvchi-undo-bar{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:10px;
    margin:8px 0;
    padding:10px 12px;
    border:1px solid #e5e7eb;
    border-radius:10px;
    background:#f9fafb;
    font-size:14px;
    color:#374151;
}
.dvchi-undo-bar[hidden]{display:none;}
.dvchi-undo-txt{flex:1 1 auto;}
.dvchi-undo-btn{
    display:inline-flex;
    align-items:center;
    gap:6px;
    min-height:44px;
    padding:8px 16px;
    border:1px solid #07c5fb;
    border-radius:8px;
    background:#07c5fb;
    color:#fff;
    font-size:14px;
    font-weight:800;
    cursor:pointer;
}
.dvchi-undo-btn:hover{background:#06b2e3;border-color:#06b2e3;}
.dvchi-undo-btn:disabled{opacity:.6;cursor:default;}
.dvchi-undo-count{
    display:inline-block;
    min-width:22px;
    padding:1px 5px;
    border-radius:999px;
    background:rgba(255,255,255,.28);
    font-variant-numeric:tabular-nums;
    text-align:center;
}

/* A row being held for undo shows the bar and nothing else. */
.dvchi-rc-list li.is-deleted > a,
.dvchi-rc-list li.is-deleted > img{display:none!important;}
.dvchi-rc-list li.is-deleted > div > *:not(.dvchi-undo-bar){display:none!important;}
.dvchi-review-item.is-deleted > *:not(.dvchi-undo-bar){display:none!important;}

/* ══════════════════════════════════════════════════════════════
   v1.18.0  What the visit cost, and the reviewer's own labels
════════════════════════════════════════════════════════════════ */
.dvchi-review-facts{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px;
    margin:8px 0 4px;
}
.dvchi-review-cost{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:4px 10px;
    border:1px solid #ffe08a;
    border-radius:999px;
    background:#fffaeb;
    font-size:13px;
    font-weight:700;
    color:#7a5d00;
}
.dvchi-review-tags{display:flex;flex-wrap:wrap;gap:6px;}
.dvchi-review-tag{
    display:inline-block;
    padding:4px 10px;
    border:1px solid #cdeefb;
    border-radius:999px;
    background:#f2fbff;
    font-size:13px;
    font-weight:700;
    color:#0b6f8c;
    overflow-wrap:anywhere;
}

.dvchi-review-del{
    min-height:44px;
    padding:8px 14px;
    border:1px solid #e5e7eb;
    border-radius:8px;
    background:#fff;
    color:#b91c1c;
    font-size:13.5px;
    font-weight:700;
    cursor:pointer;
}
.dvchi-review-del:hover{border-color:#b91c1c;background:#fef2f2;}
.dvchi-review-del:disabled{opacity:.6;cursor:default;}

@media (max-width:600px){
    .dvchi-rc-editfield{padding:9px;}
    .dvchi-rc-media.is-editing{padding:5px;}
    .dvchi-undo-bar{gap:8px;}
    .dvchi-undo-btn{flex:1 1 100%;justify-content:center;}
    .dvchi-review-facts{gap:6px;}
}

@media (prefers-reduced-motion:reduce){
    .dvchi-spin{animation:none;}
    .dvchi-rc-editfield{transition:none;}
}

/* ══════════════════════════════════════════════════════════════
   v1.18.1  Owner controls on a review

   Edit and delete sit in the corner of the card rather than in the actions
   row. Helpful and Report are things any reader does with a review; these
   two are things only its author does to it, and a full width "Delete
   review" button beside them read as an action offered to everyone.
════════════════════════════════════════════════════════════════ */
.dvchi-review-head{position:relative;}
.dvchi-review-owntools{
    position:absolute;
    top:0;
    right:0;
    display:flex;
    gap:4px;
}
.dvchi-review-edit,
.dvchi-review-del{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:30px;
    height:30px;
    padding:0;
    border:1px solid transparent;
    border-radius:8px;
    background:none;
    color:#9ca3af;
    font-size:17px;
    line-height:1;
    cursor:pointer;
}
.dvchi-review-edit:hover{border-color:#07c5fb;background:#f2fbff;color:#0b6f8c;}
.dvchi-review-del:hover{border-color:#b91c1c;background:#fef2f2;color:#b91c1c;}
.dvchi-review-edit:disabled,
.dvchi-review-del:disabled{opacity:.5;cursor:default;}

/* The stars sit just left of the corner controls, so they need room. */
.dvchi-review-owntools ~ .dvchi-review-stars,
.dvchi-review-head .dvchi-review-stars{padding-right:68px;}

.dvchi-review-viewbox[hidden],
.dvchi-review-editbox[hidden]{display:none;}
.dvchi-review-facts[hidden]{display:none;}

.dvchi-review-editbox{
    margin:10px 0;
    padding:14px;
    border:1px solid #e5e7eb;
    border-radius:12px;
    background:#fafafa;
}
.dvchi-review-editlbl{
    display:block;
    margin:10px 0 5px;
    font-size:13px;
    font-weight:800;
    color:#374151;
}
.dvchi-review-editlbl:first-child{margin-top:0;}
.dvchi-review-editbox input[type="text"],
.dvchi-review-editbox textarea{
    width:100%;
    padding:10px 12px;
    border:1px solid #d1d5db;
    border-radius:8px;
    background:#fff;
    /* 16px stops iOS zooming the page when the field takes focus. */
    font-size:16px;
    font-family:inherit;
    line-height:1.45;
    color:#111;
    box-sizing:border-box;
}
.dvchi-review-editbox textarea{resize:vertical;}
.dvchi-review-editbox input[type="text"]:focus,
.dvchi-review-editbox textarea:focus{
    border-color:#07c5fb;
    outline:0;
    box-shadow:0 0 0 3px rgba(7,197,251,.16);
}

.dvchi-review-editstars{display:flex;gap:2px;}
.dvchi-review-editstars button{
    /* 44px keeps each star a real touch target on a phone. */
    width:44px;
    height:44px;
    padding:0;
    border:0;
    background:none;
    color:#d1d5db;
    font-size:26px;
    line-height:1;
    cursor:pointer;
}
.dvchi-review-editstars button.is-on{color:#f5a623;}
.dvchi-review-editstars button:hover{color:#f5a623;}

.dvchi-review-editnote{margin:10px 0;font-size:12.5px;color:#6b7280;}
.dvchi-review-editacts{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;}
.dvchi-review-editacts button{min-height:44px;padding:10px 18px;}
.dvchi-review-editcancel{
    border:1px solid #d1d5db;
    border-radius:8px;
    background:#fff;
    color:#374151;
    font-weight:800;
    cursor:pointer;
}
.dvchi-review-editcancel:hover{border-color:#07c5fb;color:#111;}
.dvchi-review-editsave{display:inline-flex;align-items:center;gap:8px;}
.dvchi-review-editsave.is-busy .dvchi-spin{display:inline-block;}
.dvchi-review-editsave.is-busy{opacity:.85;cursor:progress;}

.dvchi-review-edited{
    font-size:12px;
    font-style:italic;
    color:#6b7280;
    cursor:help;
}

@media (max-width:600px){
    .dvchi-review-head .dvchi-review-stars{padding-right:0;}
    .dvchi-review-owntools{position:static;margin-left:auto;}
    .dvchi-review-editacts button{flex:1 1 100%;}
    .dvchi-review-editstars button{width:40px;height:40px;font-size:24px;}
}
