/* ai-text-detector-wp 1.5.0 — v3 result card (UI contract r66.3, ux-pass-2). Scoped to .ai-detector-results-v3.is-v3s.
   Tokens: ground #F5F7FA, panel #FFFFFF, ink #0F1620, ink-2 #3B4756, muted #6B7785, line #D9E0E8, line-2 #E9EEF3, signal #0E8F74 (tint #D7F5EA),
   amber #B7791F (tint #FBEEDB). Fonts inherit from the theme (Schibsted Grotesk + IBM Plex Mono self-hosted). No highlights.
   Layout = ResultStates.dc.html (reconciled): text left 7.2fr, evidence right 4.8fr, one border, one shadow. */
.ai-detector-results-v3.is-v3s { --r66-green:#0E8F74; --r66-green-hover:#0B6F5A; --r66-green-tint:#D7F5EA; --r66-amber:#B7791F; --r66-amber-tint:#FBEEDB; --r66-ink:#0F1620; --r66-ink2:#3B4756; --r66-ground:#F5F7FA; --r66-line:#D9E0E8; --r66-line2:#E9EEF3; --r66-muted:#6B7785;
  --r66-sans:'DC Sans','DC Sans Fallback',Arial,Helvetica,system-ui,sans-serif; --r66-mono:'DC Mono','DC Mono Fallback','Courier New',Menlo,monospace;
  border:0 !important; box-shadow:none !important; background:transparent !important; padding:0 !important; margin:0 !important; border-radius:0 !important; }
/* single frame: the card carries the only border; every wrapper the plugin/scaffold adds is flattened */
.dc-results-shell:not([hidden]) { border:0 !important; box-shadow:none !important; background:transparent !important; padding:0 !important; }
.ai-detector-results-v3.is-v3s .section-badge, .ai-detector-results-v3.is-v3s [data-r62="v2-result"], .ai-detector-results-v3.is-v3s [data-r62="summary"], .ai-detector-results-v3.is-v3s .r62-detail-head,
.ai-detector-results-v3.is-v3s .r62-consistency, .ai-detector-results-v3.is-v3s .sentence-breakdown-section, .ai-detector-results-v3.is-v3s .r62-fulldetail, .ai-detector-results-v3.is-v3s .r62-detail,
.ai-detector-results-v3.is-v3s .r62-workspace, .ai-detector-results-v3.is-v3s .results-details-v3, .ai-detector-results-v3.is-v3s [data-r62="review-btn"], .ai-detector-results-v3.is-v3s .r62-actions-v8,
.ai-detector-results-v3.is-v3s .result-actions-v3, .ai-detector-results-v3.is-v3s .r62-meta, .ai-detector-results-v3.is-v3s .results-meta-v3, .ai-detector-results-v3.is-v3s .r62-v2-dot, .ai-detector-results-v3.is-v3s .result-icon-v3 { display:none !important; }
.ai-detector-results-v3.is-v3s .results-header-v3 { position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.r66 { display:grid; grid-template-columns:minmax(0,7.2fr) minmax(0,4.8fr); font-family:var(--r66-sans); color:var(--r66-ink); background:#fff; border:1px solid var(--r66-line); border-radius:14px; box-shadow:0 1px 2px rgba(15,22,32,.06),0 12px 32px -20px rgba(15,22,32,.25); overflow:hidden; }
.r66 h2, .r66 h3, .r66 p { margin:0; }
.r66__left { display:flex; flex-direction:column; border-right:1px solid var(--r66-line2); min-width:0; }
.r66__left .r66__eyebrow { padding:18px 28px 0; }
.r66__text { padding:10px 28px 24px; line-height:1.8; font-size:16px; white-space:pre-wrap; overflow-wrap:anywhere; max-height:640px; overflow:auto; color:var(--r66-ink2); }
.r66 .r66__textmeta { margin-top:auto; padding:12px 24px; border-top:1px solid var(--r66-line2); font-size:12.5px; color:var(--r66-muted); }
.r66__right { display:flex; flex-direction:column; padding:24px 26px; gap:16px; min-width:0; }
.r66__eyebrow { font-family:var(--r66-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--r66-muted); }
.r66__statusrow { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.r66__status { color:var(--r66-green); }
.r66.is-band-human .r66__status { color:var(--r66-ink2); } .r66.is-band-uncertain .r66__status { color:var(--r66-amber); }
.r66__latency { font-family:var(--r66-mono); font-size:11px; color:var(--r66-muted); white-space:nowrap; }
.r66__gauge { display:flex; align-items:flex-end; gap:18px; }
.r66__gauge-text { display:flex; flex-direction:column; gap:6px; padding-bottom:6px; min-width:0; }
.r66__ring { width:132px; height:132px; flex:0 0 auto; }
.r66__ring circle { fill:none; stroke-width:12; }
.r66__ring .bg { stroke:var(--r66-line2); } .r66__ring .fg { stroke:var(--r66-ink2); stroke-linecap:round; transition:stroke-dashoffset .6s ease-out; }
.r66.is-band-ai .r66__ring .fg { stroke:var(--r66-green); } .r66.is-band-uncertain .r66__ring .fg { stroke:var(--r66-amber); }
.r66__num { font-family:var(--r66-mono); font-size:40px; font-weight:600; line-height:1; letter-spacing:-.03em; }
.r66__of { font-size:11px; color:var(--r66-muted); margin-left:6px; }
.r66__scorename { font-size:13px; color:var(--r66-muted); }
.r66__band { font-size:24px; font-weight:800; line-height:1.1; letter-spacing:-.025em; }
.r66__band:focus-visible { outline:2px solid var(--r66-green); outline-offset:3px; border-radius:4px; }
.r66.is-band-ai .r66__band { color:var(--r66-green); } .r66.is-band-uncertain .r66__band { color:var(--r66-amber); }
.r66__range { font-family:var(--r66-mono); font-size:12px; color:var(--r66-muted); display:flex; align-items:center; gap:6px; white-space:nowrap; min-height:22px; }
.r66 .r66__help { position:relative; width:22px; height:22px; min-width:0 !important; min-height:0 !important; padding:0; margin:0; border:1px solid var(--r66-line); background:#fff; color:var(--r66-green); font:600 12px/1 var(--r66-mono); cursor:pointer; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; box-shadow:none; line-height:1; }
.r66 .r66__help::after { content:''; position:absolute; inset:-11px; } /* 44 px hit area around a 22 px mark */
.r66__help:hover, .r66__help[aria-expanded="true"] { border-color:var(--r66-green); background:var(--r66-green-tint); }
.r66__help:focus-visible { outline:2px solid var(--r66-green); outline-offset:2px; }
.r66__helptext { font-size:12.5px; color:var(--r66-ink2); line-height:1.5; background:var(--r66-ground); border:1px solid var(--r66-line2); border-radius:8px; padding:8px 10px; }
.r66__helptext[hidden] { display:none; }
.r66 .r66__range:hover + .r66__helptext[hidden], .r66 .r66__range:focus-within + .r66__helptext[hidden] { display:block; } /* hover / keyboard reveal; tap toggles via the button */
.r66__strip { position:relative; height:10px; margin-top:4px; border-radius:5px; background:#E9EEF3; } /* zones set by the runtime from the band edges */
.r66__strip-range { position:absolute; top:0; bottom:0; background:rgba(14,143,116,.35); border-radius:5px; }
.r66.is-band-human .r66__strip-range { background:rgba(15,22,32,.14); } .r66.is-band-uncertain .r66__strip-range { background:rgba(183,121,31,.30); }
.r66__strip-marker { position:absolute; top:-5px; width:3px; height:20px; margin-left:-1px; background:var(--r66-ink); border-radius:2px; }
.r66__strip-labels { display:flex; justify-content:space-between; font-family:var(--r66-mono); font-size:11px; letter-spacing:.02em; text-transform:none; color:var(--r66-muted); gap:8px; margin-top:-6px; }
.r66__strip-labels span { white-space:nowrap; }
.r66__strip-labels span:last-child { color:var(--r66-green); font-weight:600; }
.r66 .r66__scalenote { font-size:12.5px; color:var(--r66-ink2); line-height:1.5; margin-top:-4px; }
.r66__scalenote:empty { display:none; }
.r66__tiles { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.r66__tile { background:var(--r66-ground); border-radius:8px; padding:12px 14px; display:flex; flex-direction:column; gap:2px; min-width:0; }
.r66__tile .v { font-family:var(--r66-mono); font-size:20px; font-weight:600; white-space:nowrap; line-height:1.2; }
.r66__tile .v--sm { font-size:13px; }
.r66__tile .k { font-size:12px; color:var(--r66-muted); line-height:1.45; }
.r66__tile--text .r66__fpr { color:var(--r66-ink2); font-size:13px; }
.r66__tile--mono .k { font-family:var(--r66-mono); font-size:11px; overflow-wrap:anywhere; }
.r66__why, .r66__means { border:1px solid var(--r66-line2); border-radius:8px; padding:12px 14px; display:flex; flex-direction:column; gap:6px; }
.r66__why ul { margin:0; padding-left:18px; font-size:13.5px; line-height:1.55; color:var(--r66-ink2); }
.r66__means { background:var(--r66-ground); border-color:var(--r66-line); }
.r66__means-body p { font-size:13.5px; line-height:1.6; color:var(--r66-ink2); }
.r66__means-body p + p { margin-top:8px; }
.r66__means-short { color:#8A5A12 !important; background:var(--r66-amber-tint); border-radius:6px; padding:6px 10px; font-size:13px !important; }
.r66__actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:auto; }
.r66__btn { flex:1 1 auto; min-height:44px; padding:0 14px; border-radius:8px; border:1px solid var(--r66-green); background:var(--r66-green); color:#fff; font:inherit; font-size:14px; font-weight:700; cursor:pointer; text-align:center; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; }
.r66__btn:hover { background:var(--r66-green-hover); border-color:var(--r66-green-hover); color:#fff; text-decoration:none; }
.r66__btn--secondary { background:#fff; color:var(--r66-ink); border-color:var(--r66-line); font-weight:600; }
.r66__btn--secondary:hover { background:#fff; color:var(--r66-ink); border-color:var(--r66-ink); }
.r66__btn:focus-visible, .r66__link:focus-visible { outline:2px solid var(--r66-green); outline-offset:2px; }
.r66__link { flex:0 0 auto; min-height:44px; display:inline-flex; align-items:center; padding:0 6px; color:var(--r66-green); font-size:14px; font-weight:600; text-decoration:none; white-space:nowrap; }
.r66__link:hover { color:var(--r66-green-hover); text-decoration:underline; }
.r66__disclaimer { font-size:12px; color:var(--r66-muted); line-height:1.5; }
@media (max-width:900px) {
  .r66 { grid-template-columns:1fr; }
  .r66__right { order:-1; padding:18px 18px 16px; gap:14px; }
  .r66__left { border-right:0; border-top:1px solid var(--r66-line2); }
  .r66__left .r66__eyebrow { padding:14px 18px 0; }
  .r66__text { padding:8px 18px 14px; font-size:14.5px; max-height:420px; }
  .r66 .r66__textmeta { padding:10px 18px; }
  .r66__ring { width:96px; height:96px; }
  .r66__num { font-size:32px; }
  .r66__band { font-size:18px; }
  .r66__tiles { grid-template-columns:1fr; gap:8px; }
  .r66__tile { flex-direction:row; align-items:baseline; gap:10px; padding:10px 12px; }
  .r66__tile .v { font-size:17px; flex:0 0 auto; }
  .r66__tile--text { flex-direction:column; }
  .r66__tile--mono { flex-direction:column; gap:2px; }
  .r66__tile--mono .k { white-space:normal; overflow-wrap:anywhere; }
  .r66__range { white-space:normal; }
  .r66__link { flex:1 1 100%; justify-content:center; }
}

/* ── ux-pass 1.4.0: multi-passage cards, error retry, print report ─────────────────────────────── */
.dc-multi[hidden] { display:none; }
.dc-mini { background:#fff; border:1px solid var(--r66-line); border-left-width:1px; border-radius:12px; padding:14px 16px; display:flex; flex-direction:column; gap:4px; }
.dc-mini__title { font-family:var(--r66-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--r66-muted); }
.dc-mini__score { font-family:var(--r66-mono); font-size:28px; font-weight:600; line-height:1.1; color:var(--r66-ink); }
.dc-mini__score small { font-family:var(--r66-sans); font-size:11px; font-weight:400; color:var(--r66-muted); margin-left:5px; }
.dc-mini__band { font-size:16px; font-weight:800; letter-spacing:-.02em; color:var(--r66-ink); }
.dc-mini.is-band-ai .dc-mini__band { color:var(--r66-green); } .dc-mini.is-band-uncertain .dc-mini__band { color:var(--r66-amber); }
.dc-mini__range, .dc-mini__meta { font-family:var(--r66-mono); font-size:11.5px; color:var(--r66-muted); }
[data-dc-retry] { flex:0 0 auto; margin-top:10px; max-width:200px; }

@media print {
  .r66 { grid-template-columns:1fr; box-shadow:none; border:0; }
  .r66__actions, .r66__help, .r66__link { display:none !important; }
  .r66__text { max-height:none; overflow:visible; font-size:11pt; }
  .r66__right { padding:0 0 12px; }
  .r66__left { border-top:0; }
  .r66__helptext[hidden] { display:block !important; }
  .r66__tiles { grid-template-columns:1fr 1fr; }
  .dc-mini { break-inside:avoid; }
}

/* the legacy print header from detector-form.css ("AI Text Detector - Analysis Report") is not part of the v3 report */
@media print { .ai-detector-results-v3.is-v3s::before, .ai-detector-results-v3.is-v3s::after, .ai-detector-wrapper-v3::before, .ai-detector-wrapper-v3::after { content:none !important; display:none !important; } }

/* WCAG AA on small text: the brand green #0E8F74 measures 4.04:1 on white (fine for the 24 px band headline at the
   3:1 large-text bar, short of 4.5:1 for 11-13 px labels). Small green/amber text uses the palette's darker members
   #0B6F5A (6.11:1) and #8A5A12 (5.91:1); no new colour is introduced. */
.ai-detector-results-v3.is-v3s .r66__status{color:#0B6F5A}
.ai-detector-results-v3.is-v3s .r66.is-band-uncertain .r66__status{color:#8A5A12}
.ai-detector-results-v3.is-v3s .r66__strip-labels span:last-child{color:#0B6F5A}
.ai-detector-results-v3.is-v3s .r66__link{color:#0B6F5A}
.ai-detector-results-v3.is-v3s .r66.is-band-uncertain .r66__band{color:#8A5A12}
.ai-detector-results-v3.is-v3s .r66__help{color:#0B6F5A}

/* Below 901 px the band headline drops to 18 px, which axe measures as small text (13.5 pt bold): use the darker
   palette green there; the 24 px/800 desktop headline keeps the signal green (large-text bar, measured 4.04:1). */
@media (max-width:900px){ .ai-detector-results-v3.is-v3s .r66.is-band-ai .r66__band{color:#0B6F5A} }

/* Designed error/limit state (ux-pass §3.7): the 9.x amber callout, one retry control, the user's text untouched. */
.dc-results-shell .ai-detector-error-v2, .ai-detector-error-v2.section-error { background:var(--r66-amber-tint) !important; border:1px solid rgba(183,121,31,.35) !important; border-radius:14px !important; color:#8A5A12 !important; padding:18px 20px !important; box-shadow:none !important; display:flex; gap:14px; align-items:flex-start; }
.ai-detector-error-v2 .section-badge, .ai-detector-error-v2 .try-again-btn-v2, .ai-detector-error-v2 .error-actions-v2 { display:none !important; }
.ai-detector-error-v2 .error-icon-v2 { color:#B7791F; flex:0 0 auto; }
.ai-detector-error-v2 .error-icon-v2 svg { width:24px; height:24px; }
.ai-detector-error-v2 .error-title-v2 { font-family:var(--r66-sans); font-size:17px; font-weight:700; color:#6D460E; margin:0 0 4px; }
.ai-detector-error-v2 .error-message-v2 { font-family:var(--r66-sans); font-size:14px; line-height:1.55; color:#8A5A12; margin:0; }
.ai-detector-error-v2 [data-dc-retry] { margin-top:12px; background:#0B6F5A; border-color:#0B6F5A; }
.ai-detector-error-v2 [data-dc-retry]:hover { background:#0A6351; border-color:#0A6351; }

/* ═══════════════ ux-pass-2 (UI contract r66.3) ═══════════════ */

/* §1.3 — the three band labels are positioned from the result's own band edges (JS sets `left`),
   so each sits at the centre of the zone it names. The row is a positioning context, not a flex row. */
.r66__strip-labels { display:block; position:relative; height:15px; margin-top:-2px; }
.r66__strip-labels span { position:absolute; top:0; white-space:nowrap; }
.r66__strip-labels span.is-collapsed { display:none; }

/* §1.6 — the "Your text" column keeps its own height instead of stretching to the result column.
   The card's vertical rule moves to the grid container so it still runs the full height of the card
   once the column stops stretching (the two-column layout only exists above 900 px). */
@media (min-width:901px) {
  .r66 { position:relative; align-items:start; }
  .r66__left { align-self:start; border-right:0; }
  .r66 .r66__textmeta { margin-top:12px; }
  .r66::before { content:''; position:absolute; top:0; bottom:0; left:60%; width:1px; background:var(--r66-line2); pointer-events:none; }
}

/* §1.6 — Save as PDF is the filled primary; Re-check is the outline secondary. Order is DOM order. */

/* §1.2 — compare mode: heading, per-passage disclosure. */
.dc-multi__title { font-family:var(--r66-sans); font-size:18px; font-weight:800; letter-spacing:-.02em; color:var(--r66-ink); margin:0 0 6px; }
.dc-multi__title:focus-visible { outline:2px solid #0B6F5A; outline-offset:3px; }
.dc-mini__details { margin-top:8px; border-top:1px solid var(--r66-line2); padding-top:8px; }
.dc-mini__details > summary { cursor:pointer; font-family:var(--r66-sans); font-size:13px; font-weight:600; color:#0B6F5A; list-style:none; padding:2px 0; }
.dc-mini__details > summary::-webkit-details-marker { display:none; }
.dc-mini__details > summary::after { content:' +'; font-family:var(--r66-mono); }
.dc-mini__details[open] > summary::after { content:' –'; }
.dc-mini__details > summary:focus-visible { outline:2px solid #0B6F5A; outline-offset:2px; border-radius:4px; }
.dc-mini__details .r66__eyebrow { margin:8px 0 4px; }
.dc-mini__why { margin:0; padding-left:18px; font-size:13px; line-height:1.5; color:var(--r66-ink2); }
.dc-mini__why li { margin:2px 0; }
.dc-mini__means { font-size:13px; line-height:1.55; color:var(--r66-ink2); margin:0; }
.dc-mini__fpr { font-family:var(--r66-mono); font-size:11.5px; color:var(--r66-muted); margin:8px 0 0; }
/* §1.2 — the single-result card must never be visible while compare results are on screen. */
.ai-detector-results-v3 .r66[hidden] { display:none !important; }
.ai-detector-results-v3 .dc-multi[hidden] { display:none !important; }

/* §1.2 — "Passage 1" over the main box while compare mode is open. */
.dc-mainlabel { margin:0 0 6px; }
.dc-mainlabel .dc-passage__title { font-family:var(--r66-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--r66-muted); }

/* §1.5 — the Ctrl+Enter hint is meaningless without a physical keyboard. */
@media (hover: none) and (pointer: coarse) { .keyboard-hint { display:none !important; } }

/* §1.5 — the two secondary input controls share one row and only wrap when the width forces it.
   Both labels ship in the DOM and CSS picks one, so the button's accessible name never depends on JS. */
.dc-inputtools { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.dc-inputtools > button { display:inline-flex; align-items:center; gap:6px; }
.dc-it__icon { flex:0 0 auto; }
.dc-it__short { display:none; }
@media (max-width:640px) {
  .dc-inputtools > button { flex:1 1 0; min-width:0; justify-content:center; font-size:13px; padding:8px 10px; white-space:nowrap; }
  .dc-it__full { display:none; }
  .dc-it__short { display:inline; }
}
