/* Loaded My House retains its DOM during a bounded routine proof; inert and API proof gates still block actions. */
body[data-house-session-state="checking"][data-house-session-refresh="routine"] [data-my-house-visible-check="routine"] {
    pointer-events: none !important;
}
/* Verification masks private content without destroying a same-reader draft. */
body[data-house-session-state]:not([data-house-session-state="verified"]) :is(
    [data-web-bookshop-result], [data-web-bookshop-member-note],
    [data-web-bookshop-cart], .web-bookshop-price.is-member,
    [data-house-private], [data-reading-room], [data-reader-badge-profile],
    [data-reader-badge-grid], [data-reader-badge-status], [data-my-house][data-my-house-member="signed-in"]:not([data-my-house-visible-check="routine"]),
    [data-forum-content], [data-community-app], [data-course-frame-shell],
    [data-audio-player], .owned-chapter-shell, .expanded-my-house:not([data-my-house-visible-check="routine"] .expanded-my-house),
    .expanded-reader-notes, .expanded-commentary-requests, .expanded-series-hub,
    #character-map, #murder-board
),
body[data-house-session-state]:not([data-house-session-state="verified"]) :is(
    [data-web-bookshop-result], [data-web-bookshop-member-note],
    [data-web-bookshop-cart], .web-bookshop-price.is-member,
    [data-house-private], [data-reading-room], [data-reader-badge-profile],
    [data-reader-badge-grid], [data-reader-badge-status], [data-my-house][data-my-house-member="signed-in"]:not([data-my-house-visible-check="routine"]),
    [data-forum-content], [data-community-app], [data-course-frame-shell],
    [data-audio-player], .owned-chapter-shell, .expanded-my-house:not([data-my-house-visible-check="routine"] .expanded-my-house),
    .expanded-reader-notes, .expanded-commentary-requests, .expanded-series-hub,
    #character-map, #murder-board
) *,
body[data-ghost-member-uuid][data-house-session-state]:not([data-house-session-state="verified"]) [data-reading-post],
body[data-ghost-member-uuid][data-house-session-state]:not([data-house-session-state="verified"]) [data-reading-post] *:not(:where(
    body[data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .gh-content[data-member-chapter-visible-check],
    body[data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .gh-content[data-member-chapter-visible-check] *
)) {
    visibility: hidden !important;
    pointer-events: none !important;
}
/* Previously verified foreground refresh keeps only the static public cover
   and launcher reachable. Player and account actions stay masked. */
body[data-ghost-member-uuid][data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .reader-cover > :is(.article-header, .article-image),
body[data-ghost-member-uuid][data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .reader-cover > :is(.article-header, .article-image) *,
body[data-ghost-member-uuid][data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .reader-cover > .reader-utilities > .story-audio-inline > .story-audio-launch,
body[data-ghost-member-uuid][data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .reader-cover > .reader-utilities > .story-audio-inline > .story-audio-launch * {
    visibility: visible !important;
    pointer-events: auto !important;
}
/* The chapter controller grants only previously authorized prose a bounded
   visible check. Excluding its descendants from the blanket mask preserves
   authored visibility:hidden; inert/action fences and private masks remain. */
body[data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .gh-content[data-member-chapter-visible-check],
body[data-house-session-state="verified"] [data-reading-post] > .gh-content[data-member-chapter-visible-check] {
    visibility: visible !important;
    pointer-events: none !important;
}
/* Verification presentation changes must take effect synchronously. The
   global reduced-motion duration otherwise creates opacity/visibility transitions. */
body[data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .gh-content[data-member-chapter-visible-check],
body[data-house-session-state="checking"][data-house-session-refresh="routine"] [data-reading-post] > .gh-content[data-member-chapter-visible-check] *,
body[data-house-session-state="verified"] [data-reading-post] > .gh-content[data-member-chapter-visible-check],
body[data-house-session-state="verified"] [data-reading-post] > .gh-content[data-member-chapter-visible-check] * {
    transition: none !important;
}
/* Nested private tools stay masked until both identity and chapter proof retire the permit. */
body[data-house-session-state] [data-reading-post] > .gh-content[data-member-chapter-visible-check] :is(
    [data-web-bookshop-result], [data-web-bookshop-member-note],
    [data-web-bookshop-cart], .web-bookshop-price.is-member,
    [data-house-private], [data-reading-room], [data-reader-badge-profile],
    [data-reader-badge-grid], [data-reader-badge-status], [data-my-house][data-my-house-member="signed-in"],
    [data-forum-content], [data-community-app], [data-course-frame-shell],
    [data-audio-player], .owned-chapter-shell, .expanded-my-house,
    .expanded-reader-notes, .expanded-commentary-requests, .expanded-series-hub,
    #character-map, #murder-board, [data-story-audio-toggle],
    [data-sign-out], [data-members-signout], a[href$="/members/signout/"], a[href$="/members/signout"]
),
body[data-house-session-state] [data-reading-post] > .gh-content[data-member-chapter-visible-check] :is(
    [data-web-bookshop-result], [data-web-bookshop-member-note],
    [data-web-bookshop-cart], .web-bookshop-price.is-member,
    [data-house-private], [data-reading-room], [data-reader-badge-profile],
    [data-reader-badge-grid], [data-reader-badge-status], [data-my-house][data-my-house-member="signed-in"],
    [data-forum-content], [data-community-app], [data-course-frame-shell],
    [data-audio-player], .owned-chapter-shell, .expanded-my-house,
    .expanded-reader-notes, .expanded-commentary-requests, .expanded-series-hub,
    #character-map, #murder-board, [data-story-audio-toggle],
    [data-sign-out], [data-members-signout], a[href$="/members/signout/"], a[href$="/members/signout"]
) * {
    visibility: hidden !important;
    pointer-events: none !important;
}
/* Controller-owned public control chrome stays visible and inert only while
   the existing same-reader visual permit is live. Private descendants also
   retain independent opacity fences; imported HTML cannot supply these markers. */
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > .reader-cover > .reader-utilities > [data-story-mode][data-member-reader-chrome-check],
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > .reader-cover > .reader-utilities > [data-story-mode][data-member-reader-chrome-check] *,
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > .reader-cover > [data-reader-chapters][data-member-reader-chrome-check],
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > .reader-cover > [data-reader-chapters][data-member-reader-chrome-check] *,
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > [data-reader-ending] > [data-reader-chapter-ending][data-member-reader-chrome-check],
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > [data-reader-ending] > [data-reader-chapter-ending][data-member-reader-chrome-check] *,
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > [data-reader-ending] > .reader-ending-actions[data-member-reader-chrome-check],
body:is([data-house-session-state="checking"][data-house-session-refresh="routine"],[data-house-session-state="verified"]) [data-reading-post] > [data-reader-ending] > .reader-ending-actions[data-member-reader-chrome-check] * {
    visibility: visible !important;
    pointer-events: none !important;
    transition: none !important;
}
/* Account mutations retain their labels and layout while unavailable. These
   styles change no visibility, display or opacity, so private masks still win. */
body.house-brand .article[data-reading-post] .reader-ending-actions :is(.post-like-button, .post-bookmark-button, .post-read-button):is(:disabled, [aria-disabled="true"]) {
    color: #8b99a4 !important;
    border-color: #667784 !important;
    border-style: dashed !important;
    cursor: not-allowed;
}
@media (forced-colors: active) {
    body.house-brand .article[data-reading-post] .reader-ending-actions :is(.post-like-button, .post-bookmark-button, .post-read-button):is(:disabled, [aria-disabled="true"]) {
        color: GrayText !important;
        border-color: GrayText !important;
    }
}
/* A bound chapter's public Listen launcher can retain disclosure intent,
   while its private header panel waits for chapter proof as well as identity. */
body [data-reading-post][data-member-chapter-proof]:not([data-member-chapter-proof="ready"]) > .reader-cover :is([data-story-audio-panel], [data-audio-player]),
body [data-reading-post][data-member-chapter-proof]:not([data-member-chapter-proof="ready"]) > .reader-cover :is([data-story-audio-panel], [data-audio-player]) * {
    visibility: hidden !important;
    pointer-events: none !important;
}
.house-session-banner {
    position: fixed;
    z-index: 10000;
    inset: auto 1rem 1rem;
    width: fit-content;
    max-width: min(38rem, calc(100vw - 2rem));
    margin-inline: auto;
    padding: .85rem 1rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    color: #f6efe5;
    background: #211c1a;
    border: 1px solid #a78b68;
    border-radius: .5rem;
    box-shadow: 0 .5rem 2rem #0005;
    font: 1rem/1.45 system-ui, sans-serif;
}
.house-session-banner[hidden], .house-session-banner button[hidden],
.house-session-banner [data-house-session-signin][hidden] { display: none !important; }
.house-session-banner button, .house-session-banner [data-house-session-signin] {
    flex: none;
    padding: .55rem .85rem;
    border: 1px solid currentColor;
    border-radius: .3rem;
    color: inherit;
    background: transparent;
    font: inherit;
    cursor: pointer;
    text-decoration: none;
}
.house-session-banner button:focus-visible, .house-session-banner [data-house-session-signin]:focus-visible { outline: 3px solid #d8b887; outline-offset: 3px; }
@media (max-width: 480px) {
    .house-session-banner { align-items: start; gap: .7rem; font-size: .9rem; }
}
