/* Reviews hub — pages/reviews.php. Shares the gp-* design language (Fraunces,
   sharp 2px corners, accent = user-selectable wheel value via --bmm-accent). */

.rv-wrap{
    --accent:var(--bmm-accent, #7E3AF2);
    --accent-deep:var(--bmm-accent-deep, #6025c5);
    --accent-soft:var(--bmm-accent-soft, #f1ebfd);
    --accent-wash:var(--bmm-accent-soft, #f7f4fe);
    --pos:var(--bmm-accent, #7E3AF2);
    --neg:#b91c1c;
    --neg-soft:#fdecec;
    --warn:#b45309;
    --warn-soft:#fff7ed;
    --line:#e7e4ef;
    --line-soft:#f1eff5;
    --ink:#14121a;
    --ink-soft:#4a4757;
    --muted:#8a8797;
    font-family:'Fraunces', Georgia, serif;
    color:var(--ink);
}
.rv-wrap *{ box-sizing:border-box; }
.rv-inner{ max-width:1080px; margin:0 auto; }

/* Corner-ticked card primitive */
.rv-card,
.rv-hdr{
    position:relative;
    background:#fff;
    border:1px solid var(--line);
    border-radius:2px;
    padding:22px clamp(16px, 2.4vw, 30px);
    margin-bottom:20px;
}
.rv-card::before, .rv-card::after,
.rv-hdr::before, .rv-hdr::after{
    content:""; position:absolute; width:11px; height:11px;
    border:1px solid var(--accent); opacity:.45; pointer-events:none;
}
.rv-card::before, .rv-hdr::before{ top:-1px; left:-1px; border-right:none; border-bottom:none; }
.rv-card::after,  .rv-hdr::after{ bottom:-1px; right:-1px; border-left:none; border-top:none; }

.rv-card > h2{
    font-family:'Fraunces', serif; font-weight:500; font-size:20px;
    letter-spacing:-0.01em; color:var(--ink); margin:0 0 4px;
}
.rv-card > .rv-card-sub{
    font-size:12px; color:var(--muted); margin:0 0 18px;
}

/* Breadcrumb */
.rv-crumb{
    display:flex; align-items:center; gap:8px; flex-wrap:wrap;
    font-size:11px; letter-spacing:.2em; text-transform:uppercase;
    color:var(--muted); font-weight:500; margin-bottom:12px;
}
.rv-crumb a{ color:var(--muted); text-decoration:none; }
.rv-crumb a:hover{ color:var(--accent); }
.rv-crumb .sep{ color:var(--line); }
.rv-crumb .cur{ color:var(--accent); }

/* Header */
.rv-hdr-grid{ display:grid; grid-template-columns:1fr; gap:24px; }
@media (min-width:900px){
    .rv-hdr-grid{ grid-template-columns:minmax(0,1.2fr) minmax(0,0.8fr); }
}
.rv-hdr-main{ min-width:0; }

.rv-title-row{ display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap; }
.rv-title{
    font-family:'Fraunces', serif; font-weight:500;
    font-size:clamp(26px, 3vw, 36px); line-height:1.05;
    letter-spacing:-0.015em; margin:0; flex:1 1 auto; min-width:0;
}
.rv-title .rv-sub{ font-style:italic; color:var(--accent); font-weight:400; }

/* Official "verified" stamp */
.rv-stamp{
    flex:0 0 auto; display:inline-flex; align-items:center; gap:10px;
    padding:8px 12px; border:1px solid color-mix(in srgb, var(--bmm-accent, #7E3AF2) 35%, transparent);
    background:#fff; border-radius:2px; position:relative;
}
.rv-stamp::before, .rv-stamp::after{
    content:""; position:absolute; width:6px; height:6px;
    border:1px solid var(--accent); opacity:.7;
}
.rv-stamp::before{ top:-1px; left:-1px; border-right:none; border-bottom:none; }
.rv-stamp::after{ bottom:-1px; right:-1px; border-left:none; border-top:none; }
.rv-stamp .ico{
    width:34px; height:34px; flex:0 0 34px; display:grid; place-items:center;
    border:1px solid var(--accent); color:var(--accent);
    background:var(--accent-soft); transform:rotate(-6deg);
}
.rv-stamp .ico svg{ width:18px; height:18px; }
.rv-stamp .txt{ display:flex; flex-direction:column; gap:1px; }
.rv-stamp .t1{ font-size:9.5px; letter-spacing:.26em; text-transform:uppercase; color:var(--muted); font-weight:600; }
.rv-stamp .t2{ font-family:'Fraunces', serif; font-style:italic; font-size:14px; color:var(--ink); font-weight:500; }
.rv-stamp .t3{
    margin-top:4px; display:inline-flex; align-items:center; gap:5px;
    font-size:10px; font-weight:600; color:var(--warn);
}
.rv-stamp .t3 .dot{ width:5px; height:5px; flex:0 0 5px; border-radius:50%; background:var(--warn); }

/* Standalone stale / not-official alert */
.rv-alert{
    margin-top:14px; padding:12px 14px;
    border:1px solid #f1d4ab; border-left:3px solid var(--warn);
    background:var(--warn-soft); border-radius:2px;
    font-size:13.5px; line-height:1.5; color:#7c4a12;
}
.rv-alert strong{ font-weight:600; color:#7c4a12; }
.rv-alert .rv-alert-title{
    display:block; font-family:'Fraunces', serif; font-style:italic;
    font-size:15px; color:#7c4a12; margin-bottom:3px;
}

/* Chips */
.rv-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
.rv-chip{
    display:inline-flex; align-items:center; gap:6px;
    font-size:10px; letter-spacing:.18em; text-transform:uppercase; font-weight:600;
    padding:4px 10px; border:1px solid var(--line); background:#fff;
    color:var(--ink-soft); border-radius:2px;
}
.rv-chip .d{ width:5px; height:5px; border-radius:50%; background:var(--muted); }
.rv-chip.status-1 .d{ background:#16a34a; box-shadow:0 0 0 3px rgba(22,163,74,.15); }
.rv-chip.status-0 .d{ background:#d97706; }
.rv-chip.status-2 .d, .rv-chip.status-4 .d{ background:var(--neg); }
.rv-chip.premium{ color:#7c5c12; border-color:#b88a2c; background:#fcf5e4; }
.rv-chip.premium .d{ background:#b88a2c; }

/* Facts */
.rv-facts{
    display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:0;
    margin-top:20px; border:1px solid var(--line-soft); border-radius:2px;
}
.rv-fact{ padding:12px 16px; border-right:1px solid var(--line-soft); min-width:0; }
.rv-fact:last-child{ border-right:none; }
.rv-fact .l{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); font-weight:500; }
.rv-fact .v{ font-family:'Fraunces', serif; font-size:15px; color:var(--ink); margin-top:4px; word-break:break-word; }
.rv-fact .v a, .rv-fact .v button{
    color:var(--accent); text-decoration:none; font-family:'Fraunces', serif; font-size:15px; font-weight:500;
    background:none; border:none; padding:0; cursor:pointer;
    border-bottom:1px solid color-mix(in srgb, var(--bmm-accent, #7E3AF2) 30%, transparent);
}
.rv-fact .v a:hover, .rv-fact .v button:hover{ border-bottom-color:var(--accent); }
.rv-link-inactive{
    color:var(--muted); text-decoration:line-through;
    text-decoration-color:color-mix(in srgb, var(--muted) 55%, transparent); cursor:default;
}
@media (max-width:620px){
    .rv-facts{ grid-template-columns:1fr; }
    .rv-fact{ border-right:none; border-bottom:1px solid var(--line-soft); }
    .rv-fact:last-child{ border-bottom:none; }
}

/* Vote stat strip */
.rv-votestats{ display:flex; flex-wrap:wrap; gap:0; margin-top:18px; }
.rv-stat{ padding:0 18px; border-right:1px solid var(--line-soft); min-width:0; }
.rv-stat:first-child{ padding-left:0; }
.rv-stat:last-child{ border-right:none; }
.rv-stat .n{
    font-family:'Fraunces', serif; font-style:italic; font-size:22px; font-weight:400;
    color:var(--ink); font-variant-numeric:tabular-nums; line-height:1;
}
.rv-stat .n.pos{ color:var(--pos); }
.rv-stat .n.neg{ color:var(--neg); }
.rv-stat .l{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); font-weight:500; margin-top:4px; }

/* CTA buttons */
.rv-cta{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.rv-btn{
    display:inline-flex; align-items:center; gap:8px;
    font-family:'Fraunces', serif; font-size:15px; font-weight:500;
    padding:10px 20px; border-radius:2px; text-decoration:none; cursor:pointer;
    border:1px solid transparent; transition:all .2s ease;
}
.rv-btn.primary{ background:var(--accent); color:#fff; }
.rv-btn.primary:hover{ background:var(--accent-deep); transform:translateY(-1px); }
.rv-btn.ghost{ background:#fff; color:var(--accent); border-color:var(--accent); }
.rv-btn.ghost:hover{ background:var(--accent); color:#fff; }
.rv-btn.muted{ background:#fff; color:var(--ink-soft); border-color:var(--line); }
.rv-btn.muted:hover{ color:var(--accent); border-color:var(--accent); }
.rv-btn.disabled{ background:var(--line-soft); color:var(--muted); border-color:var(--line); cursor:not-allowed; pointer-events:none; }

/* Aside preview */
.rv-hdr-aside{ min-width:0; }
.rv-preview{ position:relative; border:1px solid var(--line); background:#fff; border-radius:2px; overflow:hidden; }
.rv-preview .img{ aspect-ratio:16/9; background:var(--line-soft); overflow:hidden; position:relative; }
.rv-preview .img img{ width:100%; height:100%; object-fit:cover; }
.rv-preview .img .overlay{ position:absolute; inset:0; background:linear-gradient(180deg, transparent 55%, rgba(20,18,26,.4)); pointer-events:none; }
.rv-preview-stats{ display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--line-soft); }
.rv-preview-stats > div{ padding:14px 16px; border-right:1px solid var(--line-soft); }
.rv-preview-stats > div:last-child{ border-right:none; }
.rv-preview-stats .l{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); font-weight:500; }
.rv-preview-stats .n{ font-family:'Fraunces', serif; font-size:22px; font-style:italic; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1; margin-top:6px; }
.rv-preview-stats .n.pos{ color:var(--pos); }
.rv-preview-stats .sub{ font-size:12px; color:var(--muted); margin-top:4px; }

/* Summary / sentiment */
.rv-summary{ display:flex; flex-wrap:wrap; align-items:center; gap:22px; margin-bottom:22px; }
.rv-senti{ flex:0 0 auto; text-align:center; }
.rv-senti .big{
    font-family:'Fraunces', serif; font-style:italic; font-size:40px; line-height:1;
    color:var(--pos); font-variant-numeric:tabular-nums;
}
.rv-senti .big.low{ color:var(--neg); }
.rv-senti .lbl{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); margin-top:6px; }
.rv-senti-bar{ flex:1 1 240px; min-width:200px; }
.rv-senti-track{ height:12px; border:1px solid var(--line); border-radius:2px; overflow:hidden; display:flex; background:var(--neg-soft); }
.rv-senti-fill{ background:var(--pos); height:100%; }
.rv-senti-legend{ display:flex; justify-content:space-between; margin-top:8px; font-size:12px; color:var(--ink-soft); }
.rv-senti-legend .pos{ color:var(--pos); font-weight:600; }
.rv-senti-legend .neg{ color:var(--neg); font-weight:600; }

/* Charts */
.rv-charts{ display:grid; grid-template-columns:1fr; gap:22px; }
@media (min-width:760px){ .rv-charts.two{ grid-template-columns:1fr 1fr; } }
.rv-chart-box{ border:1px solid var(--line-soft); border-radius:2px; padding:14px 14px 10px; }
.rv-chart-box h3{
    font-family:'Fraunces', serif; font-weight:500; font-size:14px; color:var(--ink);
    margin:0 0 2px; letter-spacing:0;
}
.rv-chart-box .rv-chart-sub{ font-size:11px; color:var(--muted); margin:0 0 12px; }
.rv-chart-canvas-wrap{ position:relative; height:240px; }
.rv-chart-note{
    border:1px dashed var(--line); border-radius:2px; background:#fbfafd;
    padding:24px 18px; text-align:center; color:var(--muted); font-size:13px; line-height:1.5;
}

/* Review lists */
.rv-reviews-grid{ display:grid; grid-template-columns:1fr; gap:24px; }
@media (min-width:820px){ .rv-reviews-grid{ grid-template-columns:1fr 1fr; } }
.rv-col-head{
    display:flex; align-items:baseline; gap:8px;
    font-family:'Fraunces', serif; font-weight:500; font-size:16px; color:var(--ink);
    padding-bottom:10px; margin-bottom:14px; border-bottom:1px solid var(--line-soft);
}
.rv-col-head .c{ font-size:12px; color:var(--muted); font-style:italic; }
.rv-col-head.pos .dot, .rv-col-head.neg .dot{ width:8px; height:8px; border-radius:50%; display:inline-block; }
.rv-col-head.pos .dot{ background:var(--pos); }
.rv-col-head.neg .dot{ background:var(--neg); }
.rv-col-list{ display:flex; flex-direction:column; gap:14px; }

.rv-review{ border:1px solid var(--line-soft); border-radius:2px; padding:14px 16px; background:#fff; }
.rv-review-head{ display:flex; align-items:center; gap:12px; }
.rv-avatar{
    width:38px; height:38px; flex:0 0 38px; display:grid; place-items:center;
    background:var(--accent); color:#fff; border-radius:2px;
    font-family:'Fraunces', serif; font-style:italic; font-weight:500; font-size:17px;
}
.rv-review-meta{ display:flex; flex-direction:column; min-width:0; margin-right:auto; }
.rv-review-user{ font-family:'Fraunces', serif; font-size:15px; color:var(--ink); font-weight:500; }
.rv-review-date{ font-size:11px; color:var(--muted); letter-spacing:.02em; }
.rv-tag{
    flex:0 0 auto; font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:600;
    padding:4px 9px; border-radius:2px; border:1px solid;
}
.rv-tag.is-pos{ color:var(--pos); border-color:color-mix(in srgb, var(--bmm-accent, #7E3AF2) 35%, transparent); background:var(--accent-soft); }
.rv-tag.is-neg{ color:var(--neg); border-color:#f3b9b9; background:var(--neg-soft); }
.rv-review-msg{
    margin-top:12px; font-family:'Fraunces', serif; font-size:14.5px; line-height:1.6; color:var(--ink-soft);
    overflow-wrap:break-word; word-break:break-word; hyphens:auto;
}
.rv-review-reply{
    margin-top:12px; padding:10px 12px; border-left:3px solid var(--accent);
    background:var(--accent-wash); border-radius:2px;
}
.rv-reply-head{ font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); font-weight:600; margin-bottom:4px; }
.rv-reply-pending{ color:var(--muted); font-style:italic; text-transform:none; letter-spacing:0; }
.rv-reply-msg{ font-family:'Fraunces', serif; font-size:13.5px; line-height:1.55; color:var(--ink-soft); }

.rv-empty{
    border:1px dashed var(--line); border-radius:2px; background:#fbfafd;
    padding:22px 16px; text-align:center; color:var(--muted); font-size:13.5px;
}

/* Feature / bug request sections */
.rv-requests-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:4px; }
.rv-requests-head .rv-viewall{
    font-size:13px; color:var(--accent); text-decoration:none;
    border-bottom:1px solid color-mix(in srgb, var(--bmm-accent, #7E3AF2) 30%, transparent);
}
.rv-requests-head .rv-viewall:hover{ border-bottom-color:var(--accent); }
.rv-req-list{ display:flex; flex-direction:column; gap:10px; margin:16px 0 18px; }
.rv-req{ display:flex; gap:14px; border:1px solid var(--line-soft); border-radius:2px; padding:12px 14px; transition:border-color .2s ease; }
.rv-req:hover{ border-color:var(--accent); }
.rv-req-votes{
    flex:0 0 auto; display:flex; flex-direction:column; align-items:center; justify-content:center;
    min-width:46px; padding-right:14px; border-right:1px solid var(--line-soft);
}
.rv-req-votes .up{ font-family:'Fraunces', serif; font-style:italic; font-size:20px; color:var(--pos); line-height:1; }
.rv-req-votes .lbl{ font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-top:3px; }
.rv-req-body{ min-width:0; }
.rv-req-title{
    font-family:'Fraunces', serif; font-size:15px; font-weight:500; color:var(--ink);
    text-decoration:none; display:inline-block;
}
.rv-req-title:hover{ color:var(--accent); }
.rv-req-excerpt{ font-size:13px; color:var(--ink-soft); margin:4px 0 0; line-height:1.5; overflow-wrap:break-word; }
.rv-req-meta{ font-size:11px; color:var(--muted); margin-top:6px; letter-spacing:.02em; }
.rv-req-foot{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.rv-req-empty{ color:var(--muted); font-size:13.5px; font-style:italic; margin:14px 0 16px; }

/* External-link interstitial (games.css isn't loaded here; flat-style it) */
#external-link-modal{ position:fixed; inset:0; z-index:50; display:none; align-items:center; justify-content:center; padding:24px; }
#external-link-modal.flex{ display:flex; }
#external-link-modal .rv-modal-backdrop{ position:absolute; inset:0; background:rgba(20,18,26,.5); }
#external-link-modal .rv-modal-card{
    position:relative; z-index:1; width:100%; max-width:440px; background:#fff;
    border:1px solid var(--line); border-radius:2px; padding:22px;
    box-shadow:0 30px 80px -30px rgba(20,18,26,.4); font-family:'Fraunces', serif;
}
#external-link-modal .rv-modal-card::before, #external-link-modal .rv-modal-card::after{
    content:""; position:absolute; width:12px; height:12px; border:1px solid var(--accent); opacity:.75;
}
#external-link-modal .rv-modal-card::before{ top:-1px; left:-1px; border-right:none; border-bottom:none; }
#external-link-modal .rv-modal-card::after{ bottom:-1px; right:-1px; border-left:none; border-top:none; }
#external-link-modal .eyebrow{ font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); }
#external-link-modal h3{ font-family:'Fraunces', serif; font-weight:500; font-size:20px; color:var(--ink); margin:4px 0 6px; }
#external-link-modal p{ font-size:13px; color:var(--ink-soft); margin:0; line-height:1.5; }
#external-link-modal .rv-modal-url{
    margin:14px 0; padding:10px 12px; background:var(--accent-wash); border:1px solid var(--line);
    border-radius:2px; font-style:italic; font-size:13px; color:var(--ink-soft); word-break:break-all;
}
#external-link-modal .rv-modal-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:6px; }

/* Mobile */
@media (max-width:767px){
    .rv-card, .rv-hdr{ padding:16px 13px; margin-bottom:14px; }
    .rv-title{ font-size:24px; }
    .rv-stamp{ padding:6px 10px; }
    .rv-votestats{ margin-top:14px; }
    .rv-stat{ padding:0 12px; }
    .rv-stat:first-child{ padding-left:0; }
    .rv-stat .n{ font-size:18px; }
    .rv-senti .big{ font-size:32px; }
    .rv-chart-canvas-wrap{ height:200px; }
}
