/* Final typography layer. Keep author-selected story prose size separate. */
body{font-size:16px}
body .site-nav a,body .site-nav button,body .nav-item,body .nav-button{font-size:16px;line-height:1.5}
body .sidebar .nav-label,body .sidebar .sidebar-link{font-size:15px}
body .button,body .platform-tabs button,body .filter,body .filter-tabs button{font-size:15px;line-height:1.5}
body .page-heading p,body .hero p,body .intro,body .hint,body .notice p{font-size:16px;line-height:1.85}
body .field label,body .details summary,body .inline-check{font-size:15px;line-height:1.6}
body .field input,body .field textarea,body .field select{font-size:16px}
body .field small,body .form-error,body .status-box{font-size:14px;line-height:1.75}
body .api-official-notice{font-size:15px;line-height:1.8}
body .api-official-notice strong{font-size:16px}
body .api-official-notice p{margin:8px 0 0;overflow-wrap:anywhere}
body .world-copy p,body .character-body .desc,body .character-body .title,body .book-card p,body .story-info p{font-size:15px;line-height:1.8}
body .world-copy p{height:auto;min-height:2.5em}
body .tag,body .genre,body .connection,body .story-info small,body .page-footer,body .eyebrow{font-size:13px}
body .section-title h2{font-size:19px}
body .toasts{font-size:15px;line-height:1.6}
body .novel-scene-caption,body .scene-tool-label,body .novel-foot,body .novel-foot button,body .novel-image-status{font-size:13px;line-height:1.6}
body .novel-visual{background-size:cover;background-position:center;background-repeat:no-repeat}
/* The archive aisle lies left of the foreground worktable. Keep this cast on that floor. */
body .novel-visual[style*="anthology-10-game-scene-1-20261016.png"]:has(img[src*="anthology-10-character-"][src*="-game-20261016-standing.png"]){background-position:left center}
body .novel-visual[style*="anthology-10-game-scene-1-20261016.png"]:has(img[src*="anthology-10-character-"][src*="-game-20261016-standing.png"]) .novel-actor-layer{left:0;right:40%}
body .novel-visual[style*="anthology-19-scene-perfumery-round2.png"]:has(img[src*="anthology-19-character-"][src*="-game-20261017-standing.png"]){background-position:right center}
body .novel-visual[style*="anthology-19-scene-perfumery-round2.png"]:has(img[src*="anthology-19-character-"][src*="-game-20261017-standing.png"]) .novel-actor-layer{left:32%;right:1%;bottom:4px}
/* These original foreground tables leave floor at the backstage right and kitchen left. */
body .novel-visual[style*="anthology-21-scene-backstage-round2.png"]:has(img[src*="anthology-21-character-"][src*="-game-20261017-standing.png"]){background-position:right center}
body .novel-visual[style*="anthology-21-scene-backstage-round2.png"]:has(img[src*="anthology-21-character-"][src*="-game-20261017-standing.png"]) .novel-actor-layer{left:40%;right:1%;bottom:4px}
body .novel-visual[style*="anthology-22-scene-kitchen-round2.png"]:has(img[src*="anthology-22-character-"][src*="-game-20261017-standing.png"]){background-position:left center}
body .novel-visual[style*="anthology-22-scene-kitchen-round2.png"]:has(img[src*="anthology-22-character-"][src*="-game-20261017-standing.png"]) .novel-actor-layer{left:-6%;right:78%;bottom:4px}
body .novel-visual[style*="anthology-21-game-scene-3-20261017-v2.png"]:has(img[src*="anthology-21-character-"][src*="-game-20261017-standing.png"]) .novel-actor-layer{left:24%;right:0}
body .r3-prose,body .hall-section p,body .world-card p,body .auth-intro{font-size:15px;line-height:1.85}
.personal-points{display:flex;gap:24px;justify-content:space-between;flex-wrap:wrap;margin-bottom:24px}
.invite-rule{font-size:15px;line-height:1.8;color:#e4c5a9}
.email-code-row{display:flex;gap:8px}.email-code-row input{min-width:0;flex:1}
.captcha-dialog{color:#f4ede4;background:#1e1b1b;border:1px solid #776452;border-radius:14px;width:min(380px,calc(100vw - 24px));padding:20px;box-sizing:border-box}
.captcha-dialog::backdrop{background:#000b}.captcha-dialog form{display:flex;align-items:center;justify-content:space-between;gap:12px}
.captcha-dialog h2{font-size:20px}.captcha-close{background:none;border:0;color:inherit;font-size:28px;cursor:pointer}
.captcha-picture{position:relative;width:100%;overflow:hidden;user-select:none}.captcha-picture img{position:absolute;left:0;top:0;pointer-events:none}
.captcha-background{width:100%;height:100%;object-fit:fill}.captcha-piece{object-fit:fill}
.captcha-rail{position:relative;min-height:44px;margin:14px 0;background:#393333;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:13px}
.captcha-handle{position:absolute;left:0;top:0;width:44px;height:44px;background:#f6d6a6;color:#211c17;border:0;border-radius:6px;cursor:grab;touch-action:none;font-size:24px}
.captcha-message{font-size:14px;min-height:2.5em;line-height:1.7}.captcha-handle:active{cursor:grabbing}
@media(max-width:720px){
 body .page-heading p,body .intro,body .hero p{font-size:15px}
 body .page-heading .button,body .world-copy p,body .character-body .desc,body .character-body .title,body .book-card p{font-size:14px}
 body .filter,body .platform-tabs button{font-size:14px}
 body .bottom-nav button{font-size:12px;line-height:1.5}
 body .tag,body .genre,body .page-footer,body .eyebrow{font-size:12px}
 body .novel-foot,body .novel-foot button,body .novel-image-status{font-size:12px}
 body .novel-foot{flex-wrap:wrap;min-height:48px}
 body .novel-image-status{max-width:none;flex:1;min-width:120px}
 body .novel-foot button{max-width:none}
 body .novel-layout .composer-bottom,body .novel-layout .scene-meta{font-size:12px}
}
@media(max-width:720px){body .story-detail-hero:has(>img[src^="/art/anthology-21-game-concept-20261017-banner-v2.png"])>img{object-position:35% 40%}}
/* Keep the fixed faces inside these independently composed shallow banners. */
body .story-detail-hero>img[src^="/art/anthology-23-game-concept-20261017-banner-v2.png"]{object-position:50% 0%}
body .story-detail-hero>img[src^="/art/anthology-24-game-concept-20261017-banner.png"]{object-position:50% 0%}
@media(max-width:720px){body .story-detail-hero>img[src^="/art/anthology-24-game-concept-20261017-banner.png"]{object-position:70% 0%}}
/* Preserve full fixed faces in these two original garage/cafe shallow banners. */
body .story-detail-hero>img[src^="/art/anthology-25-game-concept-20261017-banner.png"]{object-position:50% 0%}
body .story-detail-hero>img[src^="/art/anthology-26-game-concept-20261017-banner.png"]{object-position:50% 0%}
/* Preserve full fixed faces in these two original rehearsal/bridge shallow banners. */
body .story-detail-hero>img[src^="/art/anthology-27-game-concept-20261017-banner.png"]{object-position:50% 0%}
body .story-detail-hero>img[src^="/art/anthology-28-game-concept-20261017-banner.png"]{object-position:50% 0%}
/* Keep own full faces in these four individually composed shallow concept banners. */
body .story-detail-hero>img[src^="/art/anthology-29-game-concept-20261018-banner.png"]{object-position:50% 0%}
body .story-detail-hero>img[src^="/art/anthology-30-game-concept-20261018-banner.png"]{object-position:50% 0%}
body .story-detail-hero>img[src^="/art/anthology-35-game-concept-20261018-banner.png"]{object-position:50% 0%}
body .story-detail-hero>img[src^="/art/anthology-36-game-concept-20261018-banner.png"]{object-position:50% 0%}

/* Four independently designed 20261019 covers: preserve full own faces in shallow heroes. */
body .story-detail-hero>img:is([src^="/art/anthology-38-game-concept-20261019-banner.png"],[src^="/art/anthology-39-game-concept-20261019-banner.png"],[src^="/art/anthology-40-game-concept-20261019-banner.png"],[src^="/art/anthology-41-game-concept-20261019-banner.png"]){object-position:50% 0%}
@media(max-width:720px){body .story-detail-hero>img:is([src^="/art/anthology-38-game-concept-20261019-banner.png"],[src^="/art/anthology-39-game-concept-20261019-banner.png"],[src^="/art/anthology-40-game-concept-20261019-banner.png"],[src^="/art/anthology-41-game-concept-20261019-banner.png"]){object-position:75% 0%}}
/* Their painted logotypes already show the title; keep the semantic h1 accessible and the original props unobscured. */
.story-opening .opening-art:has(>img:is([src^="/art/anthology-38-game-concept-20261019-tall.png"],[src^="/art/anthology-39-game-concept-20261019-tall.png"],[src^="/art/anthology-40-game-concept-20261019-tall.png"],[src^="/art/anthology-41-game-concept-20261019-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-38-game-concept-20261019-tall.png"],[src^="/art/anthology-39-game-concept-20261019-tall.png"],[src^="/art/anthology-40-game-concept-20261019-tall.png"],[src^="/art/anthology-41-game-concept-20261019-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-38-game-concept-20261019-tall.png"],[src^="/art/anthology-39-game-concept-20261019-tall.png"],[src^="/art/anthology-40-game-concept-20261019-tall.png"],[src^="/art/anthology-41-game-concept-20261019-tall.png"])) .opening-copy p{line-height:1.6}

/* Four87 covers: root first-render observation requires full own faces in shallow banners. */
body .story-detail-hero>img:is([src^="/art/anthology-42-game-concept-20261019-banner.png"],[src^="/art/anthology-44-game-concept-20261019-banner.png"],[src^="/art/anthology-45-game-concept-20261019-banner.png"],[src^="/art/anthology-46-game-concept-20261019-banner.png"]){object-position:50% 0%}
/* Painted titles remain visible; retain accessible semantic h1 and compact original intro/buttons. */
.story-opening .opening-art:has(>img:is([src^="/art/anthology-42-game-concept-20261019-tall.png"],[src^="/art/anthology-44-game-concept-20261019-tall.png"],[src^="/art/anthology-45-game-concept-20261019-tall.png"],[src^="/art/anthology-46-game-concept-20261019-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-42-game-concept-20261019-tall.png"],[src^="/art/anthology-44-game-concept-20261019-tall.png"],[src^="/art/anthology-45-game-concept-20261019-tall.png"],[src^="/art/anthology-46-game-concept-20261019-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-42-game-concept-20261019-tall.png"],[src^="/art/anthology-44-game-concept-20261019-tall.png"],[src^="/art/anthology-45-game-concept-20261019-tall.png"],[src^="/art/anthology-46-game-concept-20261019-tall.png"])) .opening-copy p{line-height:1.6}
/* This post office has a clear floor aisle to the left of its original counter. */
body .novel-visual[style*="anthology-46-game-scene-postoffice-20261019.png"]:has(img[src*="anthology-46-character-"][src*="-game-20261019-standing.png"]){background-position:left center}
body .novel-visual[style*="anthology-46-game-scene-postoffice-20261019.png"]:has(img[src*="anthology-46-character-"][src*="-game-20261019-standing.png"]) .novel-actor-layer{left:0;right:45%;bottom:4px}

/*89 selected shallow banners: root actual first read found desktop heads cropped. */
body .story-detail-hero>img:is([src^="/art/anthology-47-game-concept-20261019-banner.png"],[src^="/art/anthology-48-game-concept-20261019-banner.png"]){object-position:50% 0%}
/* Keep the designed cover titles and compact original intro/button UI below the props. */
.story-opening .opening-art:has(>img:is([src^="/art/anthology-47-game-concept-20261019-tall.png"],[src^="/art/anthology-48-game-concept-20261019-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-47-game-concept-20261019-tall.png"],[src^="/art/anthology-48-game-concept-20261019-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-47-game-concept-20261019-tall.png"],[src^="/art/anthology-48-game-concept-20261019-tall.png"])) .opening-copy p{line-height:1.6}

/* Root320px read: keep Pei Jin complete face inside this shallow mobile banner. */
@media(max-width:720px){body .story-detail-hero>img[src^="/art/anthology-47-game-concept-20261019-banner.png"]{object-position:75% 0%}}

/*90 root first page reading: preserve complete own faces in these two shallow banners. */
body .story-detail-hero>img:is([src^="/art/anthology-49-game-concept-20261019-banner.png"],[src^="/art/anthology-50-game-concept-20261019-banner.png"]){object-position:50% 0%}
/* Retain the painted titles and accessible semantic h1; keep the original intro and start button compact. */
.story-opening .opening-art:has(>img:is([src^="/art/anthology-49-game-concept-20261019-tall.png"],[src^="/art/anthology-50-game-concept-20261019-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-49-game-concept-20261019-tall.png"],[src^="/art/anthology-50-game-concept-20261019-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-49-game-concept-20261019-tall.png"],[src^="/art/anthology-50-game-concept-20261019-tall.png"])) .opening-copy p{line-height:1.6}

/*91 root first page reading: preserve complete own faces in these two shallow banners. */
body .story-detail-hero>img:is([src^="/art/anthology-51-game-concept-20261020-banner.png"],[src^="/art/anthology-52-game-concept-20261020-banner.png"]){object-position:50% 0%}
/* Retain the painted titles and accessible semantic h1; keep the original intro and start button compact. */
.story-opening .opening-art:has(>img:is([src^="/art/anthology-51-game-concept-20261020-tall.png"],[src^="/art/anthology-52-game-concept-20261020-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-51-game-concept-20261020-tall.png"],[src^="/art/anthology-52-game-concept-20261020-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-51-game-concept-20261020-tall.png"],[src^="/art/anthology-52-game-concept-20261020-tall.png"])) .opening-copy p{line-height:1.6}

/*94: crops measured from the first actual desktop and mobile pages. */
body .story-detail-hero>img:is([src^="/art/anthology-53-game-concept-20261020-banner.png"],[src^="/art/anthology-54-game-concept-20261020-banner.png"],[src^="/art/preset-clock-game-concept-20261020-banner.png"],[src^="/art/preset-cloud-game-concept-20261020-banner.png"]){object-position:50% 0%}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-53-game-concept-20261020-tall.png"],[src^="/art/anthology-54-game-concept-20261020-tall.png"],[src^="/art/preset-clock-game-concept-20261020-tall.png"],[src^="/art/preset-cloud-game-concept-20261020-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-53-game-concept-20261020-tall.png"],[src^="/art/anthology-54-game-concept-20261020-tall.png"],[src^="/art/preset-clock-game-concept-20261020-tall.png"],[src^="/art/preset-cloud-game-concept-20261020-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/anthology-53-game-concept-20261020-tall.png"],[src^="/art/anthology-54-game-concept-20261020-tall.png"],[src^="/art/preset-clock-game-concept-20261020-tall.png"],[src^="/art/preset-cloud-game-concept-20261020-tall.png"])) .opening-copy p{line-height:1.6}
/* Keep each new environmental face above its own caption; original registry framing remains intact. */
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-clock-character-06-game-20261020-showcase.png"]){--close-y:0.09!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-cloud-character-01-game-20261020-showcase.png"]){--close-y:0.115!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-cloud-character-03-game-20261020-showcase.png"]){--close-y:0.07!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-cloud-character-04-game-20261020-showcase.png"]){--close-y:0.1!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-cloud-character-06-game-20261020-showcase.png"]){--close-y:0.06!important}
/* Both scene and new standing asset must match before moving the actor onto the right-hand floor. */
body .novel-visual[style*="preset-clock-game-scene-scene-1-20261020.png"]:has(img[src*="/art/preset-clock-character-"][src*="-game-20261020-standing.png"]) .novel-actor-layer{left:50%;right:0;bottom:4px}
body .novel-visual[style*="preset-clock-game-scene-scene-2-20261020.png"]:has(img[src*="/art/preset-clock-character-"][src*="-game-20261020-standing.png"]) .novel-actor-layer{left:50%;right:0;bottom:4px}

/*94 Clock welcome: the lower painted title stays visible; original intro and start action occupy the upper-left scene space. */
.story-opening .opening-art:has(>img[src^="/art/preset-clock-game-concept-20261020-tall.png"]) .opening-copy{inset:2% auto auto 3%;width:43%;box-sizing:border-box;padding:8px;gap:6px;background:#101c28c9;border:1px solid #b39b5b66;border-radius:12px}
.story-opening .opening-art:has(>img[src^="/art/preset-clock-game-concept-20261020-tall.png"]) .opening-copy button{min-height:34px;width:100%;padding:7px 6px;font-size:12px;line-height:1.2}
.story-opening .opening-art:has(>img[src^="/art/preset-clock-game-concept-20261020-tall.png"]) .opening-copy p{font-size:clamp(10px,1vw,11px);line-height:1.5;margin:0}

/* 95 candidate: only anthology-53 new tall cover, <=420px. Actual three-width reading remains required. */
@media(max-width:420px){
  .story-opening .opening-art:has(>img[src^="/art/anthology-53-game-concept-20261020-tall.png"]) .opening-copy{inset:auto 3% 1%;padding:4px 6px 3px;gap:3px}
  .story-opening .opening-art:has(>img[src^="/art/anthology-53-game-concept-20261020-tall.png"]) .opening-copy button{min-height:32px;padding:6px 8px;font-size:12px;line-height:1.2}
  .story-opening .opening-art:has(>img[src^="/art/anthology-53-game-concept-20261020-tall.png"]) .opening-copy p{font-size:11px;line-height:1.3;margin:0}
}

/* Root actual page review: only three new showcase URLs; fixed registry framing remains intact. */
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-orbit-character-01-game-20261020-showcase.png"]){--close-y:.105!important;--close-h:.4!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-tide-character-01-game-20261020-showcase.png"]){--close-y:.08!important;--close-h:.4!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-tide-character-05-game-20261020-showcase.png"]){--close-y:.115!important;--close-h:.4!important}
/* Only the newly adopted Orbit banner; root actual first-page reading. */
body .story-detail-hero>img[src^="/art/preset-orbit-game-concept-20261020-banner.png"]{object-position:50% 0%}
@media(max-width:720px){body .story-detail-hero>img[src^="/art/preset-orbit-game-concept-20261020-banner.png"]{object-position:75% 0%}}
/* Preserve both painted titles and semantic h1; original public intro and start button stay intact. */
.story-opening .opening-art:has(>img:is([src^="/art/preset-orbit-game-concept-20261020-tall.png"],[src^="/art/preset-tide-game-concept-20261020-tall.png"])) .opening-copy{inset:auto 3% 2%;padding:10px 10px 9px;gap:8px}
.story-opening .opening-art:has(>img:is([src^="/art/preset-orbit-game-concept-20261020-tall.png"],[src^="/art/preset-tide-game-concept-20261020-tall.png"])) .opening-copy h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.story-opening .opening-art:has(>img:is([src^="/art/preset-orbit-game-concept-20261020-tall.png"],[src^="/art/preset-tide-game-concept-20261020-tall.png"])) .opening-copy p{line-height:1.6}

/* 96 candidate only: original left quay/near bridge landing and workshop aisle.
   Exact new scene + new cast standing URLs only. Actual three-width feet/crops pending. */
body .novel-visual[style*="dungeon-07-game-scene-reservoir-hall-20261022.png"]:has(img[src*="/art/dungeon-07-character-"][src*="-20261023-standing-"]){background-position:left center}
body .novel-visual[style*="dungeon-07-game-scene-reservoir-hall-20261022.png"]:has(img[src*="/art/dungeon-07-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:0;right:66%;bottom:4px}
body .novel-visual[style*="dungeon-08-game-scene-chain-bridge-20261022.png"]:has(img[src*="/art/dungeon-08-character-"][src*="-20261023-standing-"]){background-position:left center}
body .novel-visual[style*="dungeon-08-game-scene-chain-bridge-20261022.png"]:has(img[src*="/art/dungeon-08-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:0;right:72%;bottom:4px}
body .novel-visual[style*="dungeon-08-game-scene-core-workshop-20261022.png"]:has(img[src*="/art/dungeon-08-character-"][src*="-20261023-standing-"]){background-position:42% center}
body .novel-visual[style*="dungeon-08-game-scene-core-workshop-20261022.png"]:has(img[src*="/art/dungeon-08-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:0;right:16%;bottom:4px}

/* 96 root actual-page observations: only five newly adopted close portraits.
   Image-space crop candidates; original registry framing and half-screen panel remain intact. */
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-07-character-05-20261023-showcase-v2.png"]){--close-y:0.125!important;--close-h:0.47!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/anthology-03-character-02-game-20261020-showcase.png"]){--close-y:0.14!important;--close-h:0.4!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-fog-character-01-game-20261022-showcase.png"]){--close-y:0.12!important;--close-h:0.46!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-fog-character-03-game-20261022-showcase.png"]){--close-y:0.105!important;--close-h:0.43!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/preset-fog-character-05-game-20261022-showcase.png"]){--close-y:0.17!important;--close-h:0.46!important}
/* Only these two new desktop banners. Mobile crops were actually read as usable and stay unchanged. */
@media(min-width:721px){
body .story-detail-hero>img[src^="/art/dungeon-07-game-concept-cover-20261022-banner.png"]{object-position:50% 26%}
body .story-detail-hero>img[src^="/art/dungeon-08-game-concept-cover-20261022-banner.png"]{object-position:50% 0%}
}

/* 97 root actual page reading: preserve Cheng Su hair in this new desktop banner. */
@media(min-width:721px){body .story-detail-hero>img[src^="/art/women-02-game-concept-cover-20261023-banner.png"]{object-position:50% 10%}}

/* 97 root actual game views: retain both original desks and place this cast on the left stone aisle. */
body .novel-visual[style*="dungeon-10-game-scene-provision-accounts-20261022.png"]:has(img[src*="/art/dungeon-10-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:0;right:65%;bottom:4px}
body .novel-visual[style*="dungeon-10-game-scene-west-archive-20261022.png"]:has(img[src*="/art/dungeon-10-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:0;right:65%;bottom:4px}

/* 4.3.98: reviewed new scene URLs only. A full-body stance is unsuitable for
   the original close foreground worktable; use an upper-body view there. */
body .novel-visual[style*="anthology-09-game-scene-workshed-20261022.png"]:has(img[src*="/art/anthology-09-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:0;right:0;top:4%;bottom:-110%}
body .novel-visual[style*="anthology-09-game-scene-workshed-20261022.png"]:has(img[src*="/art/anthology-09-character-"][src*="-20261023-standing-"]) .novel-actor>img{object-position:center top}
body .novel-visual[style*="dungeon-09-game-scene-scene-3-20261022.png"]:has(img[src*="/art/dungeon-09-character-"][src*="-20261023-standing-"]) .novel-actor-layer{left:78%;right:0;bottom:4px}
body .novel-visual[style*="dungeon-09-game-scene-scene-3-20261022.png"]:has(img[src*="/art/dungeon-09-character-"][src*="-20261023-standing-"]) .novel-actor>img{object-position:center bottom}
@media(min-width:721px){
body .story-detail-hero>img[src*="/art/women-03-game-concept-cover-20261023-banner.png"],
body .story-detail-hero>img[src*="/art/women-05-game-concept-cover-20261023-banner.png"],
body .story-detail-hero>img[src*="/art/women-06-game-concept-cover-20261023-banner.png"],
body .story-detail-hero>img[src*="/art/women-07-game-concept-cover-20261023-banner.png"]{object-position:50% 0%}
}

/* W06 has two heads at different heights. The original 320px shallow desktop
   crop cannot contain both; retain the reviewed image in a 3:1 desktop hero. */
@media(min-width:721px){
body .story-detail-hero:has(>img[src*="/art/women-06-game-concept-cover-20261023-banner.png"]){height:auto;min-height:320px;aspect-ratio:3/1}
body .story-detail-hero>img[src*="/art/women-06-game-concept-cover-20261023-banner.png"]{object-position:50% 10%}
}

/* 101 actual intro review: seated environmental portraits, precise new URLs only. */
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-01-character-01-20261023-showcase-v1.png"]){--close-y:0.15!important;--close-h:0.48!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-01-character-02-20261023-showcase-v1.png"]){--close-y:0.115!important;--close-h:0.42!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-01-character-04-20261023-showcase-v1.png"]){--close-y:0.12!important;--close-h:0.42!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-02-character-02-20261023-showcase-v2.png"]){--close-y:0.13!important;--close-h:0.43!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-02-character-03-20261023-showcase-v2.png"]){--close-y:0.09!important;--close-h:0.48!important}
.story-people .cast-photo.framed-portrait:has(>img[data-native-src="/art/dungeon-02-character-04-20261023-showcase-v1.png"]){--close-y:0.115!important;--close-h:0.44!important}

/* 102 actual cover review: exact new banner URLs only; body/cast/game/borders unchanged. */
@media(min-width:721px){
body .story-detail-hero>img[src*="/art/women-17-game-concept-cover-20261023-banner.png"],
body .story-detail-hero>img[src*="/art/women-20-game-concept-cover-20261023-banner.png"]{object-position:50% 0%}
}
@media(max-width:720px){
body .story-detail-hero>img[src*="/art/women-09-game-concept-cover-20261023-banner.png"],
body .story-detail-hero>img[src*="/art/women-17-game-concept-cover-20261023-banner.png"],
body .story-detail-hero>img[src*="/art/women-20-game-concept-cover-20261023-banner.png"]{object-position:100% 40%}
}
