/* Shared page viewer (full-screen page with region ring and quote panel).
   Brief: .impeccable/surfaces/page-viewer.md. Scope selectors under .page-viewer.
   The dialog may be nested inside the assistant card (.copilot-card), so every rule carries
   at least two classes to win over the card's own p/h3/button rules. */
.page-viewer{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;background:var(--plum-950);color:var(--plum-50);font:400 14px/1.5 'Golos Text',sans-serif;letter-spacing:normal;text-align:left;color-scheme:dark}
.page-viewer[open]{display:block;animation:pv-in 200ms var(--ease,ease-out)}
.page-viewer::backdrop{background:oklch(from var(--plum-950) l c h / .55)}
@keyframes pv-in{from{opacity:0}}
.page-viewer *{box-sizing:border-box}
.page-viewer ::selection{background:var(--mint);color:var(--mint-900)}
.page-viewer :is(button,a,[tabindex]):focus-visible{outline:2px solid var(--mint);outline-offset:2px}
/* The title takes focus programmatically on open (tabindex=-1, not a control): no ring. */
.page-viewer .pv-title:focus,.page-viewer .pv-title:focus-visible{outline:none}

.page-viewer .pv-shell{display:grid;height:100%;grid-template-columns:minmax(0,1fr) 368px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"tools panel" "stage panel"}

/* Toolbar over the aubergine surround */
.page-viewer .pv-toolbar{grid-area:tools;display:flex;align-items:center;gap:6px;min-width:0;padding:10px 14px 8px}
.page-viewer .pv-spacer{flex:1}
.page-viewer .pv-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;min-width:40px;padding:0 12px;border:0;border-radius:9px;background:oklch(from var(--white) l c h / .07);color:var(--plum-100);font:500 12px/1.3 'Golos Text',sans-serif;cursor:pointer;transition:background-color 160ms,color 160ms}
.page-viewer .pv-btn:hover:not(:disabled){background:oklch(from var(--white) l c h / .13);color:var(--white)}
.page-viewer .pv-btn:disabled{opacity:.4;cursor:default}
.page-viewer .pv-icon{padding:0;width:40px}
.page-viewer .pv-close{padding-left:10px;background:transparent;color:var(--plum-50)}
.page-viewer .pv-close svg{color:var(--mint)}
.page-viewer .pv-pages,.page-viewer .pv-zoom{display:inline-flex;align-items:center;gap:4px}
.page-viewer .pv-page-label{min-width:52px;text-align:center;font-size:12px;color:var(--plum-150);font-variant-numeric:tabular-nums}
.page-viewer .pv-page-single{margin-left:6px;text-align:left}
.page-viewer .pv-zoom-label{min-width:52px;text-align:center;font-size:12px;color:var(--plum-150);font-variant-numeric:tabular-nums}
.page-viewer .pv-fit{margin-left:6px}
.page-viewer .pv-zoom[hidden]{display:none}

/* The page */
.page-viewer .pv-stage{grid-area:stage;position:relative;min-height:0;min-width:0}
.page-viewer .pv-scroller{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y;cursor:grab;scrollbar-color:var(--plum-600) transparent}
.page-viewer .pv-scroller.is-dragging{cursor:grabbing;user-select:none}
.page-viewer .pv-scroller:focus-visible{outline:2px solid var(--mint);outline-offset:-4px}
.page-viewer .pv-sizer{position:relative;display:grid;place-items:center;width:max-content;min-width:100%;min-height:100%;padding:24px}
.page-viewer .pv-canvas{position:relative;background:var(--white);border-radius:2px;box-shadow:0 14px 44px oklch(from var(--plum-950) l c h / .5)}
.page-viewer .pv-skeleton{position:absolute;inset:0;background:var(--white) repeating-linear-gradient(to bottom,transparent 0 5.5%,oklch(from var(--plum-200) l c h / .55) 5.5% 6.6%) content-box;padding:9% 11%;transition:opacity 200ms}
.page-viewer .pv-img{position:absolute;inset:0;display:block;width:100%;height:100%;opacity:0;user-select:none;-webkit-user-drag:none;transition:opacity 180ms,filter 220ms}
.page-viewer .pv-img[src]{opacity:1}
.page-viewer .pv-img.is-thumb{filter:blur(1.5px)}
.page-viewer .pv-stage.is-ready .pv-skeleton{opacity:0}
.page-viewer .pv-rings{position:absolute;inset:0;pointer-events:none}
.page-viewer .pv-ring{position:absolute;margin:-5px 0 0 -5px;padding:5px;box-sizing:content-box;border-radius:5px;box-shadow:0 0 0 2px var(--plum-600),0 0 0 6px oklch(from var(--plum-400) l c h / .3)}
.page-viewer .pv-stage:is(.is-failed,.is-gone) .pv-rings{display:none}
.page-viewer .pv-message{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(340px,calc(100% - 48px));text-align:center;pointer-events:none}
.page-viewer .pv-message:empty{display:none}
.page-viewer .pv-message>*{pointer-events:auto}
.page-viewer .pv-stage:is(.is-failed,.is-gone) .pv-canvas{opacity:.18}
.page-viewer .pv-message-title{margin:0 0 6px;font-size:17px;font-weight:500;line-height:1.45;color:var(--plum-50)}
.page-viewer .pv-message-text{margin:0 0 16px;font-size:13px;line-height:1.6;color:var(--plum-200)}
.page-viewer .pv-retry{min-height:42px}

/* Side panel: document, claim, stored quote */
.page-viewer .pv-panel{grid-area:panel;display:flex;flex-direction:column;min-height:0;background:var(--plum-900);border-left:1px solid oklch(from var(--white) l c h / .1)}
.page-viewer .pv-head{display:flex;align-items:flex-start;gap:10px;padding:20px 22px 16px;border-bottom:1px solid var(--assistant-divider)}
.page-viewer .pv-id{flex:1;min-width:0}
.page-viewer .pv-title{margin:0;font-size:15px;font-weight:500;line-height:1.45;letter-spacing:-.01em;color:var(--plum-50);overflow-wrap:anywhere}
.page-viewer .pv-kind{margin:3px 0 0;font-size:12px;line-height:1.5;color:var(--plum-200)}
.page-viewer .pv-sheet-toggle{display:none}
.page-viewer .pv-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px 22px 20px;display:flex;flex-direction:column;gap:20px;scrollbar-color:var(--plum-600) transparent}
.page-viewer .pv-label{margin:0 0 6px;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:normal;color:var(--plum-200)}
.page-viewer .pv-claim-text{margin:0;font-size:15px;line-height:1.65;color:var(--plum-50);overflow-wrap:anywhere}
.page-viewer .pv-quote-text{margin:0;font-size:13px;line-height:1.7;color:var(--plum-150);white-space:pre-wrap;overflow-wrap:anywhere}
.page-viewer .pv-more{position:absolute;top:12px;z-index:2;display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:14px;background:oklch(from var(--plum-900) l c h / .9);color:var(--plum-100);font-size:12px;font-weight:500;line-height:1.3;pointer-events:none;box-shadow:0 4px 14px oklch(from var(--plum-950) l c h / .35)}
.page-viewer .pv-more[hidden]{display:none}
.page-viewer .pv-more svg{color:var(--mint)}
.page-viewer .pv-more-l{left:12px}.page-viewer .pv-more-r{right:12px}
.page-viewer .pv-quote-text.has-table{white-space:normal}
.page-viewer .q-text{display:block;white-space:pre-wrap}
.page-viewer .q-table{display:table;border-collapse:collapse;margin:2px 0;font-variant-numeric:tabular-nums}
.page-viewer .q-row{display:table-row}
.page-viewer .q-cell{display:table-cell;padding:3px 10px 3px 0;border-bottom:1px solid oklch(from var(--white) l c h / .1);vertical-align:top}
.page-viewer .q-cell.is-hit{color:var(--plum-50);font-weight:500}
.page-viewer .pv-num{text-decoration:underline 2px var(--mint-400);text-underline-offset:4px;text-decoration-skip-ink:none;white-space:nowrap}
.page-viewer .pv-note{display:flex;gap:9px;align-items:flex-start;color:var(--warning-300)}
.page-viewer .pv-note>svg{flex-shrink:0;margin-top:3px}
.page-viewer .pv-note-text{margin:0;font-size:13px;line-height:1.6;color:var(--warning-300)}
.page-viewer .pv-int{display:flex;gap:9px;align-items:flex-start;margin:0;font-size:13px;line-height:1.6;color:var(--plum-150)}
.page-viewer .pv-int>svg{flex-shrink:0;margin-top:3px}
.page-viewer .pv-link{margin:4px 0 0 -6px;min-height:36px;padding:4px 6px;border:0;border-radius:7px;background:transparent;color:var(--warning-300);font:500 13px/1.4 'Golos Text',sans-serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.page-viewer .pv-link:hover{color:var(--warning-100)}
.page-viewer .pv-foot{padding:12px 22px 20px;border-top:1px solid var(--assistant-divider)}
.page-viewer .pv-foot[hidden]{display:none}
.page-viewer .pv-download{display:inline-flex;align-items:center;gap:8px;min-height:40px;margin-left:-8px;padding:0 8px;border-radius:9px;color:var(--plum-150);font-size:13px;text-decoration:none}
.page-viewer .pv-download:hover{background:oklch(from var(--white) l c h / .07);color:var(--white)}

@media(max-width:1000px){.page-viewer .pv-shell{grid-template-columns:minmax(0,1fr) 320px}.page-viewer .pv-fit span{display:none}.page-viewer .pv-fit{width:40px;padding:0;margin-left:2px}}
/* Phone: the page fills the screen; the panel is a bottom sheet whose collapsed state still shows the quote. */
@media(max-width:650px){
 .page-viewer .pv-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"tools" "stage" "panel";position:relative}
 .page-viewer .pv-toolbar{padding:6px 8px;gap:2px}
 .page-viewer .pv-btn{min-height:44px;min-width:44px}
 .page-viewer .pv-icon{width:44px}
 .page-viewer .pv-zoom-label{display:none}
 .page-viewer .pv-page-label{min-width:44px}
 .page-viewer .pv-page-single{display:none}
 .page-viewer .pv-sizer{padding:12px}
 .page-viewer .pv-panel{border-left:0;border-top:1px solid oklch(from var(--white) l c h / .12);border-radius:16px 16px 0 0;max-height:85dvh;box-shadow:0 -10px 32px oklch(from var(--plum-950) l c h / .35)}
 .page-viewer .pv-head{padding:10px 8px 6px 18px;border-bottom:0;align-items:center}
 .page-viewer .pv-title{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .page-viewer .pv-kind{margin-top:0}
 .page-viewer .pv-sheet-toggle{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 10px;border:0;border-radius:9px;background:transparent;color:var(--plum-150);font:500 12px/1.3 'Golos Text',sans-serif;cursor:pointer;flex-shrink:0}
 .page-viewer .pv-sheet-toggle svg{transition:transform 200ms var(--ease,ease-out)}
 .page-viewer .pv-body{padding:0 18px 14px;gap:14px;overflow:hidden}
 .page-viewer .pv-foot{display:none;padding:10px 18px calc(14px + env(safe-area-inset-bottom))}
 .page-viewer .pv-panel[data-sheet=collapsed] :is(.pv-claim,.pv-quote .pv-label,.pv-link){display:none}
 .page-viewer .pv-panel[data-sheet=collapsed] .pv-quote-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
 .page-viewer .pv-panel[data-sheet=collapsed] .pv-note-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .page-viewer .pv-panel[data-sheet=collapsed] .pv-note>div{min-width:0}
 .page-viewer .pv-panel[data-sheet=expanded]{position:absolute;left:0;right:0;bottom:0;z-index:2}
 .page-viewer .pv-panel[data-sheet=expanded] .pv-body{overflow-y:auto}
 .page-viewer .pv-panel[data-sheet=expanded] .pv-foot{display:block}
 .page-viewer .pv-panel[data-sheet=expanded] .pv-sheet-toggle svg{transform:rotate(180deg)}
}
@media(max-width:420px){.page-viewer .pv-close span{display:none}.page-viewer .pv-close{width:44px;padding:0}}
@media(prefers-reduced-motion:reduce){.page-viewer[open]{animation:none}.page-viewer :is(.pv-img,.pv-skeleton,.pv-btn,.pv-sheet-toggle svg){transition:none}}
