.feature-copy{top:24px;justify-content:flex-end;min-height:0}
.feature-summary{overflow:hidden;scrollbar-width:none;flex:0 1 auto;min-height:0}
.feature-summary p+p{margin-top:.75em}
.feature-summary[data-first-paragraph=true] p:not(:first-child){display:none}
.hall-recommendation{font-size:13px;color:#c1c9c9;grid-column:1/-1;line-height:1.7}
.pending-dot{display:inline-block;width:8px;height:8px;margin-left:7px;border-radius:50%;background:#ff6962;box-shadow:0 0 9px #f1656540;vertical-align:middle;flex:none}
.sidebar>.nav-label{font-size:15px;font-weight:650}
@media(max-width:720px){.feature-copy{top:24px}.hall-recommendation{font-size:12px}}
.story-opening{display:grid;grid-template-rows:none;place-items:center;overflow:hidden}
.story-opening .opening-art{width:min(calc(100vw - 28px),calc((100dvh - 32px)*9/16));height:min(calc(100dvh - 32px),calc((100vw - 28px)*16/9));padding:0;display:block;min-height:0}
.story-opening .opening-art>img{width:100%;height:100%;object-fit:contain}
.opening-copy{position:absolute;inset:auto 5% 5%;display:flex;align-items:center;flex-direction:column;gap:14px;padding:32px 16px 20px;text-align:center;background:linear-gradient(180deg,#15202c00,#15202ccc 35%,#15202ce8);border-radius:18px;color:#fff4de}
.opening-copy h1{font:700 clamp(22px,4.3dvh,44px)/1.35 Georgia,"Songti SC",SimSun,serif;letter-spacing:.07em;margin:0;text-wrap:balance;overflow-wrap:anywhere;text-shadow:0 2px 12px #10151da6}
.opening-copy p{font-size:12px;line-height:1.8;margin:0;text-wrap:pretty;overflow-wrap:anywhere;color:#f0e9db}
.opening-copy .button{min-height:44px;padding:12px 26px;flex:none}
.novel-layout .scene-tools{gap:6px;flex:none}
.novel-layout .scene-tools .icon-button{width:auto;padding:8px 10px;gap:6px}
.scene-tool-label{font-size:12px;white-space:nowrap}
.play-tabs button span{overflow-wrap:anywhere;line-height:1.4;min-width:0}
.story-people.panel{padding:18px 20px;max-width:calc((50dvh - 104px)*16/9 + 40px);margin-inline:auto}
.story-people.panel>h2{margin:0 0 7px;font-size:20px;line-height:1.4}
.story-people.panel>.cast-banner-hint{margin:0 0 12px;font-size:12px;line-height:1.5}
.story-people .cast-showcase{width:min(100%,calc((50dvh - 104px)*16/9));margin-inline:auto}
.cast-banner{position:relative;display:flex;width:100%;aspect-ratio:16/9;container-type:size;container-name:cast;overflow:hidden;isolation:isolate;background:#232c30;border:1px solid #d3dfca55;border-radius:14px}
.cast-slice{position:relative;display:block;min-width:0;height:100%;flex:1 1 0%;overflow:hidden;clip-path:polygon(12% 0,100% 0,88% 100%,0 100%);margin-left:-3.5%;padding:0;background:#232c30;border:0;transition:flex .6s cubic-bezier(.22,.65,.25,1);text-align:left;cursor:pointer}
.cast-slice:first-child{margin-left:0;clip-path:polygon(0 0,100% 0,88% 100%,0 100%)}
.cast-slice:last-child{clip-path:polygon(12% 0,100% 0,100% 100%,0 100%)}
.cast-slice:only-child{clip-path:none}
.cast-banner.has-selection .cast-slice{flex:1 1 0%}
.cast-banner .cast-slice.selected{flex:0 0 100cqh}
.cast-banner:has(.cast-slice:only-child){max-width:640px;aspect-ratio:1;justify-content:center;background:none;border:0}
.cast-banner .cast-slice:only-child{flex:0 0 56.25%;border-radius:14px}
.cast-banner .cast-slice.selected:only-child{flex:0 0 100cqh}
.cast-slice .cast-photo{position:absolute;inset:0;display:block;aspect-ratio:auto;height:100%;width:100%;background:none}
.cast-slice .cast-photo img{width:100%;height:100%;object-fit:cover;filter:none}
.cast-slice .framed-portrait{container-type:size;--frame-x:var(--body-x);--frame-y:var(--body-y);--frame-h:var(--body-h)}
.cast-slice.selected .framed-portrait{--frame-x:var(--close-x);--frame-y:var(--close-y);--frame-h:var(--close-h)}
.cast-slice .framed-portrait img{position:absolute;width:calc(100cqh * var(--source-ratio,.5625) / var(--frame-h));height:calc(100cqh / var(--frame-h));max-width:none;left:calc(50% - 100cqh * var(--source-ratio,.5625) / var(--frame-h) * var(--frame-x));top:calc(-100cqh * var(--frame-y) / var(--frame-h));object-fit:fill;transition:width .6s cubic-bezier(.22,.65,.25,1),height .6s cubic-bezier(.22,.65,.25,1),left .6s cubic-bezier(.22,.65,.25,1),top .6s cubic-bezier(.22,.65,.25,1)}
.cast-pending{display:grid!important;place-items:center;color:#b7c3c1;font-size:12px}
.cast-slice .cast-photo.ensemble-crop{container-type:size}
.legacy-cast-window{position:absolute;top:0;left:50%;height:100%;width:calc(100cqh * var(--ensemble-ratio,1.77778) / 3);transform:translateX(-50%);transform-origin:center top;transition:transform .6s cubic-bezier(.22,.65,.25,1);overflow:hidden}
.cast-slice.selected .legacy-cast-window{transform:translateX(-50%) scale(1.24)}
.cast-slice .cast-photo.ensemble-crop img{position:absolute;width:300%;max-width:none;height:100%;left:calc(var(--cast-index) * -100%);object-fit:fill;filter:none}
.cast-slice .cast-label{position:absolute;inset:auto 0 0;padding:38px 14% 12px;background:linear-gradient(0deg,#10151ceb,#10151c8c 65%,transparent);color:#f8f3e7;display:flex;flex-direction:column;gap:4px;pointer-events:none}
.cast-slice .cast-label strong{font-size:clamp(12px,1.25vw,18px);font-weight:800;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cast-banner.has-selection .cast-slice:not(.selected) .cast-label strong{font-size:12px;white-space:normal}
.cast-slice .cast-label small{font-size:12px;line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cast-expanded-copy{display:none}
.cast-slice.selected .cast-expanded-copy{display:block;animation:cast-copy-in .3s .18s both}
.cast-expanded-copy p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:12px;line-height:1.7;margin:7px 0 0;color:#f3eee6}
.cast-download{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:6px 10px;border:1px solid #e7e7df66;border-radius:20px;font-size:11px;color:#fff;pointer-events:auto}
.cast-download:hover{background:#ffffff20}
.character-showcase-preview{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;margin:22px 0 0;border-top:1px solid #c6d6bf44;padding-top:20px}
.character-showcase-preview>img{width:150px;aspect-ratio:9/16;object-fit:cover;object-position:50% 25%;border-radius:8px}
.character-showcase-preview h4{font-size:16px;margin-bottom:12px}
.character-showcase-preview p{font-size:13px;line-height:1.9;color:#c6d0c0;margin-bottom:16px}
.cast-slice:focus-visible{outline:2px solid #c7e88b;outline-offset:-4px}
@keyframes cast-copy-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.cast-slice,.cast-slice .cast-photo img,.legacy-cast-window{transition:none}.cast-slice.selected .cast-expanded-copy{animation:none}}
.cast-banner-profile{min-height:92px;padding:20px 4px 2px;line-height:1.85}
.cast-banner-profile h3{font-size:20px;margin-bottom:8px}
.cast-banner-profile p{font-size:13px;white-space:pre-wrap;color:#d9e1d1}
.cast-banner-hint{opacity:.7}
.cast-banner-profile [hidden]{display:none}
@media(max-height:600px){.story-people.panel{padding:10px 16px;max-width:calc((50dvh - 70px)*16/9 + 32px)}.story-people.panel>h2{font-size:17px;margin-bottom:4px}.story-people.panel>.cast-banner-hint{font-size:10px;margin-bottom:6px}.story-people .cast-showcase{width:min(100%,calc((50dvh - 70px)*16/9))}.cast-slice .cast-label{padding:14px 13% 5px;gap:1px}.cast-slice .cast-label strong{font-size:12px}.cast-slice .cast-label small{font-size:9px}.cast-expanded-copy p{display:none}.cast-download{margin-top:3px;font-size:9px;padding:2px 5px}}
.novel-layout .novel-stage{display:grid;grid-template-columns:minmax(230px,36%) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;align-items:stretch;gap:14px;padding:18px 3% 0}
.novel-visual{grid-column:1;grid-row:1;position:relative;min-height:0;border:1px solid #e1e9dc4d;border-radius:22px;background:linear-gradient(145deg,#d2d9d410,#52688716);overflow:hidden}
.novel-visual .novel-kicker{display:block;top:16px;left:18px;font-size:12px;letter-spacing:1px;max-width:48%}
.novel-visual .novel-scene-view{top:12px;right:12px;font-size:11px}
.novel-scene-caption{position:absolute;bottom:12px;left:18px;right:18px;z-index:2;text-align:center;color:#efe7d6;font-size:11px;line-height:1.6;text-shadow:0 2px 8px #172129}
.novel-visual .novel-actor-layer{position:absolute;inset:48px 12px 36px;display:flex;align-items:stretch;justify-content:center;min-height:0;border:0;border-radius:0;background:none;backdrop-filter:none;overflow:hidden}
.novel-visual .novel-actor{width:100%;height:100%;background:none}
.novel-visual .novel-actor>img{object-fit:contain;object-position:center;max-height:100%}
.novel-visual .novel-actor>span{display:none}
.novel-visual .novel-actor.ensemble-portrait{container-type:size}
.novel-visual .novel-actor .legacy-standing-window{display:block;position:absolute;inset:auto;left:50%;top:50%;height:min(100cqh,calc(100cqw * 3 / var(--ensemble-ratio,1.77778)));width:min(100cqw,calc(100cqh * var(--ensemble-ratio,1.77778) / 3));padding:0;background:none;transform:translate(-50%,-50%);overflow:hidden}
.novel-visual .legacy-standing-window img{position:absolute;width:300%;max-width:none;height:100%;left:calc(var(--cast-index) * -100%);object-fit:fill;object-position:center}
.character-asset-list{display:grid;gap:20px;margin-top:20px}
.character-asset-card{padding:22px;border:1px solid #d3dfca35;border-radius:20px;background:linear-gradient(130deg,#354b4330,#273c522a)}
.character-asset-heading{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.character-asset-heading h3,.character-asset-heading>input{flex:1;font-size:18px;min-width:130px}
.character-asset-heading select{width:auto;min-width:100px}
.character-asset-pair{display:grid;grid-template-columns:minmax(150px,30%) minmax(0,1fr);gap:22px}
.standing-preview{margin:0;display:flex;flex-direction:column;min-width:0;border:1px solid #d3dfca42;border-radius:16px;overflow:hidden;background:linear-gradient(135deg,#d5e5d615,#628bab16)}
.standing-preview>img{width:100%;height:320px;object-fit:contain;padding:12px}
.standing-preview[data-tone=light],.full-portrait-preview[data-tone=light]{background:#e7ece0}
.standing-preview[data-tone=dark],.full-portrait-preview[data-tone=dark]{background:#182333}
.standing-preview[data-tone=light] figcaption{color:#27362c}
.author-art-job>p{line-height:1.8;font-size:13px;margin-bottom:14px}
.author-art-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:15px 0}
.author-art-compare figure{overflow:hidden;border:1px solid #a8b4a64a;border-radius:12px;background:#28364a}
.author-art-compare img{display:block;width:100%;height:min(45vh,350px);object-fit:contain;padding:8px}
.author-art-compare figcaption{padding:12px;font-size:12px;text-align:center}
.author-art-compare figcaption button{margin-left:8px;font-size:11px}
.art-job-status{padding:12px;border:1px solid #b9d6ba44;border-radius:10px;background:#93b8900e}
.author-art-records article{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid #9caeae33}
.author-art-records article span{font-size:12px;opacity:.7}
.author-art-records article button{margin-left:auto;font-size:12px}
.standing-preview>figcaption{padding:12px;display:flex;align-items:center;flex-direction:column;gap:10px;font-size:12px}
.character-face-config h4{font-size:15px;margin-bottom:12px}
.character-chat-preview{padding:17px 18px;border:1px solid #d3dfca42;border-radius:16px;background:#16253655;margin-bottom:16px}
.character-chat-preview .novel-speaker{position:static;margin:0;min-width:0;padding:0;background:none;box-shadow:none;color:#e9eddf;display:flex;align-items:center;gap:12px}
.character-chat-preview .novel-speaker>div{display:flex;flex-direction:column;gap:5px}
.character-chat-preview .novel-speaker strong{font-size:16px;letter-spacing:0}
.character-chat-preview p{font-size:12px;line-height:1.7;margin-top:12px}
.character-face-uploads{display:grid;grid-template-columns:repeat(4,minmax(65px,1fr));gap:10px}
.character-face-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0;border:1px solid #d3dfca35;border-radius:12px;padding:12px 7px;background:#c1d4c00a}
.character-face-item>img,.character-face-item>span{display:grid;place-items:center;width:60px;height:60px;max-width:100%;object-fit:cover;border-radius:15px;background:linear-gradient(140deg,#698b733d,#59759452);font-size:12px}
.character-face-item>button{font-size:10px;line-height:1.5;min-height:26px}
.character-face-item .face-remove{position:absolute;right:2px;top:0;padding:0 3px;min-height:20px;font-size:16px}
.character-face-config>small{display:block;margin-top:12px;line-height:1.8;color:#c8d5c1}
.crop-preview.full-portrait-preview{aspect-ratio:auto;height:360px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#d6e3d012,#456d871d);border:1px solid #d3dfca42}
.crop-preview.full-portrait-preview canvas{width:100%;height:100%;object-fit:contain;pointer-events:none}
.crop-preview.face-crop{aspect-ratio:1;width:min(320px,100%);margin-inline:auto}
.crop-preview.face-crop canvas{width:100%;height:100%}
.novel-layout .novel-reading-card{grid-column:2;grid-row:1;display:flex;flex-direction:column;align-self:stretch;min-height:0;height:100%;max-height:none;padding:0;margin:0;overflow:hidden}
.novel-layout .novel-reading-card:before{display:none}
.novel-reading-heading{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 22px;border-bottom:1px solid var(--stage-line);font-size:12px;color:var(--stage-ink)}
.novel-reading-heading>span{font-weight:650;letter-spacing:2px}
.novel-reading-heading button{display:flex;align-items:center;gap:6px;font-size:11px;min-height:26px;color:inherit;opacity:.75}
.novel-reading-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:18px 22px 22px;scrollbar-width:thin;overscroll-behavior:contain;outline-offset:-3px}
.novel-entry{position:relative;padding:16px 14px;margin-bottom:14px;border-left:2px solid transparent;overflow-wrap:anywhere;transition:border-color .2s ease}
.novel-entry:last-child{margin-bottom:0}
.novel-entry.active{border-left-color:var(--stage-accent)}
.novel-entry[data-kind=dialogue]{background:color-mix(in srgb,var(--stage-accent) 9%,transparent);border-radius:14px;border:1px solid color-mix(in srgb,var(--stage-line) 55%,transparent);border-left:3px solid var(--stage-line)}
.novel-entry[data-kind=dialogue].active{border-left-color:var(--stage-accent)}
.novel-entry[data-kind=player]{margin-inline:10%;padding:12px 16px;background:color-mix(in srgb,var(--stage-accent) 12%,transparent);border-radius:14px;font-style:italic}
.novel-entry .novel-narrator{margin-bottom:9px;font-size:11px;letter-spacing:2px}
.novel-entry .novel-copy,.novel-layout[data-theme=court] .novel-entry .novel-copy{max-height:none;overflow:visible;font-size:17px;line-height:1.9;white-space:pre-wrap}
.novel-entry .novel-speaker{margin-bottom:12px}
.novel-layout .novel-foot{grid-column:1/-1;grid-row:2;display:flex;height:auto;min-height:35px;padding:2px 2px 5px;gap:14px;align-items:center}
.novel-layout .novel-foot button{max-width:none;min-height:28px;padding:0;font-size:11px;white-space:normal}
.novel-layout .novel-image-status{min-width:0;max-width:none;font-size:11px;line-height:1.6}
.novel-visual .novel-image-errors{inset:44px 12px 35px;justify-content:center;align-items:center;overflow:hidden}
.novel-visual .novel-image-error{width:min(100%,260px);max-height:100%;padding:16px 12px}
@media(max-width:720px){
 .character-asset-card{padding:15px}
 .character-asset-pair{grid-template-columns:minmax(0,1fr);gap:16px}
 .standing-preview>img{height:260px}
 .character-face-uploads{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
 .character-face-item{padding:10px 4px}
 .cast-banner{border-radius:14px}
 .cast-slice .cast-label{padding:28px 13% 8px;gap:2px}
 .cast-slice .cast-label strong{font-size:12px;line-height:1.4}
 .cast-slice .cast-label small{font-size:9px;line-height:1.4}
 .cast-slice.selected .cast-label{padding:38px 12% 8px}
 .cast-expanded-copy p{font-size:10px;line-height:1.6;margin-top:5px;-webkit-line-clamp:3}
 .cast-download{font-size:9px;padding:3px 6px;margin-top:5px}
 .character-showcase-preview{grid-template-columns:100px minmax(0,1fr);gap:12px}
 .character-showcase-preview>img{width:100px}
 .cast-banner-profile{padding-top:14px;min-height:75px}
 .cast-banner-profile h3{font-size:17px}
 .cast-banner-profile p{font-size:12px}
 .opening-copy{padding:24px 12px 16px;gap:12px}
 .story-opening .opening-return{left:10px;top:max(10px,env(safe-area-inset-top));padding:7px 10px;font-size:12px}
 .novel-layout .scene-banner{display:grid;grid-template-columns:26px minmax(0,1fr);gap:6px;height:auto;min-height:98px;padding:8px 12px}
 .novel-layout .scene-banner .mobile-back{grid-column:1;grid-row:1;width:26px;padding:4px}
 .novel-layout .scene-title{grid-column:2;grid-row:1;min-width:0}
 .novel-layout .scene-title h2{font-size:17px}
 .novel-layout .scene-tools{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:4px}
 .novel-layout .scene-tools .icon-button{width:100%;min-width:0;min-height:32px;padding:6px 3px;gap:4px}
 .scene-tool-label{font-size:11px}
 .novel-layout .novel-stage{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(100px,40%) minmax(0,1fr) auto;padding:10px 13px 0;gap:10px}
 .novel-layout .novel-visual{grid-column:1;grid-row:1;border-radius:18px}
 .novel-visual .novel-kicker{top:11px;left:13px;font-size:10px}
 .novel-visual .novel-scene-view{top:7px;right:8px;font-size:10px;padding:5px 9px}
 .novel-visual .novel-actor-layer{inset:34px 12% 25px}
 .novel-scene-caption{bottom:6px;font-size:10px}
 .novel-layout .novel-reading-card{grid-column:1;grid-row:2;max-height:none;flex:auto}
 .novel-reading-heading{padding:7px 15px;font-size:11px}
 .novel-reading-scroll{padding:12px 12px 16px}
 .novel-entry{padding:12px 10px;margin-bottom:12px}
 .novel-entry .novel-copy,.novel-layout[data-theme=court] .novel-entry .novel-copy{font-size:15px;line-height:1.8}
 .novel-entry .novel-speaker{margin-bottom:9px}
 .novel-layout .novel-foot{grid-column:1;grid-row:3;gap:12px;min-height:28px;padding:0 1px 3px}
 .novel-layout .novel-foot button,.novel-layout .novel-image-status{font-size:10px;max-width:none}
 .novel-visual .novel-image-errors{inset:34px 6px 25px}
 .novel-visual .novel-image-error{gap:5px;padding:8px;max-height:100%}
 .novel-visual .novel-image-error p{margin:0}
 .novel-visual .novel-error-symbol{display:none}
}
@container cast (max-height:260px){
 .cast-slice.selected .framed-portrait{--frame-h:calc(var(--close-h) * 1.35)}
 .cast-slice.selected .cast-label{padding:18px 12% 7px;gap:2px}
 .cast-slice.selected .cast-label strong{font-size:14px}
 .cast-slice .cast-label small{font-size:9px}
 .cast-expanded-copy p{display:-webkit-box;font-size:9px;line-height:1.4;margin-top:4px;-webkit-line-clamp:2}
 .cast-download{font-size:9px;margin-top:4px;padding:3px 6px}
}
