.secure-reader {
    --sr-border: var(--border, #d8dde3);
    --sr-bg: var(--surface, #f4f5f7);
    --sr-surface: var(--surface-raised, #fff);
    --sr-ink: var(--ink, #2a2f36);
    --sr-ink-soft: var(--ink-soft, #4a4f57);
    --sr-accent: var(--accent-ink, var(--accent, #1d4e89));
    position: relative;
    margin: 1.5rem 0;
    border: 1px solid var(--sr-border);
    border-radius: 10px;
    overflow: hidden;
    background: var(--sr-surface);
}

/* PDF viewer */
.secure-reader-pdf {
    display: flex;
    flex-direction: column;
    max-height: 85vh;
}

/* CSS-only "fullscreen": a fixed overlay, not the real Fullscreen API, so
   the browser's own "press Esc to exit" banner never appears. */
.secure-reader-pdf.is-pseudo-fullscreen {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100vh;
    max-height: 100vh;
    z-index: 100000;
    border-radius: 0;
    background: var(--sr-bg);
}

body.secure-reader-fs-lock {
    overflow: hidden;
}

.secure-reader-toolbar {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    background: var(--sr-bg);
    border-bottom: 1px solid var(--sr-border);
    flex-wrap: wrap;
}

/* Scoped under .secure-reader (not just .sr-btn) so these rules outrank
   the host theme's own generic "button" styling, which can otherwise win
   on specificity for :hover/:focus states -- e.g. a theme rule shaped
   like "button:hover:not(.disabled)" is MORE specific than ".sr-btn:hover"
   (an extra element match breaks the tie) and was repainting these
   buttons solid black on hover with this theme. */
.secure-reader .sr-btn {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    border: 1px solid var(--sr-border);
    background-color: var(--sr-surface);
    color: var(--sr-ink);
    border-radius: 6px;
    padding: 0.3rem 0.6rem;
    font-size: 1rem;
    line-height: 1.2;
    text-transform: none;
    cursor: pointer;
}

.secure-reader .sr-btn:hover,
.secure-reader .sr-btn:focus-visible {
    background-color: var(--sr-surface);
    border-color: var(--sr-accent);
    color: var(--sr-accent);
}

.secure-reader .sr-btn:visited {
    color: var(--sr-ink);
}

.sr-zoom-level {
    min-width: 3.5em;
    text-align: center;
    font-size: 0.9rem;
    color: var(--sr-ink-soft);
}

.sr-page-nav {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-left: auto;
}

.sr-page-input {
    width: 3.5em;
    text-align: center;
    border: 1px solid var(--sr-border);
    background: var(--sr-surface);
    color: var(--sr-ink);
    border-radius: 6px;
    padding: 0.25rem;
}

.sr-page-total {
    color: var(--sr-ink-soft);
    font-size: 0.9rem;
}

.secure-reader-pages {
    flex: 1;
    /* Panzoom drives all movement via CSS transforms on the inner element
       (and sets this to "hidden" itself); dragging/pinching is what moves
       through the document now, not native scroll. */
    overflow: hidden;
    padding: 1rem;
    background: var(--sr-bg);
    touch-action: none;
}

.secure-reader-pages-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    width: fit-content;
    margin: 0 auto;
}

.secure-reader-page canvas {
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
    background: #fff;
    user-select: none;
    -webkit-user-drag: none;
    display: block;
}

.secure-reader-status {
    margin: 0;
    padding: 0.5rem 0.75rem;
    font-size: 0.9rem;
    color: var(--sr-ink-soft);
    text-align: center;
}

.secure-reader-status[hidden] {
    display: none;
}

/* Image viewer */
.secure-reader-image {
    position: relative;
    display: block;
    max-width: 100%;
    overflow: hidden;
    border-radius: 10px;
    background: var(--sr-bg);
}

.secure-reader-image-preview {
    display: block;
    width: 100%;
    height: auto;
    user-select: none;
    -webkit-user-drag: none;
    cursor: zoom-in;
    touch-action: none;
}

.secure-reader-image-preview.is-zoomed {
    cursor: grab;
}

.sr-image-zoom-trigger {
    position: absolute;
    right: 0.75rem;
    bottom: 0.75rem;
    opacity: 0.9;
}

.secure-reader-image-overlay {
    /* Reset the box styling the base .secure-reader rule would otherwise
       add -- this overlay only carries that class so the close button
       below can see the --sr-* tokens, not for its box appearance. */
    margin: 0;
    border: none;
    border-radius: 0;
    position: fixed;
    inset: 0;
    background: rgba(8, 9, 11, 0.94);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    overflow: hidden;
    touch-action: none;
}

.secure-reader-image-overlay img {
    max-width: 92vw;
    max-height: 92vh;
    user-select: none;
    -webkit-user-drag: none;
    cursor: zoom-in;
}

.secure-reader-image-overlay img.is-zoomed {
    cursor: grab;
}

.secure-reader-image-overlay-close {
    position: fixed;
    top: 1rem;
    right: 1.25rem;
}

/* Office-document placeholder */
.secure-reader-document {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 2rem 1rem;
    text-align: center;
    color: var(--sr-ink-soft);
}

.sr-document-icon {
    font-size: 2.5rem;
}

.sr-document-filename {
    font-weight: 600;
    color: var(--sr-ink);
    margin: 0;
    word-break: break-all;
}

.sr-document-notice {
    margin: 0;
    font-size: 0.9rem;
    max-width: 32em;
}
