/* The campaign lives in the existing sheets; it never changes the tile rack. */
.campaign-intro{text-align:center;padding:4px 0 22px}
.campaign-emblem{display:grid;place-items:center;width:50px;height:50px;margin:0 auto 15px;border:1px solid var(--cabinet-outline);border-radius:50%;font:27px var(--serif);color:var(--cabinet-accent);background:var(--cabinet-soft)}
.campaign-intro h3{font:31px/1.15 var(--serif);color:var(--cabinet-deep);margin:9px 0 12px;letter-spacing:-.6px}
.campaign-intro p{font:italic 15px/1.65 var(--serif);color:var(--cabinet-faint)}
.campaign-chapter-dots,.story-progress{display:flex;justify-content:center;gap:6px;margin-top:17px}
.campaign-chapter-dots i,.story-progress i{display:block;width:24px;height:3px;border-radius:4px;background:var(--cabinet-outline)}
.campaign-chapter-dots .is-clear,.story-progress .is-read{background:var(--cabinet-accent)}
.campaign-notice{padding:13px;border:1px solid var(--cabinet-outline);border-radius:10px;background:var(--cabinet-soft);font-size:11px;line-height:1.6;margin:5px 0 19px;color:var(--cabinet-deep)}
.campaign-notice .secondary{height:36px;font-size:10px;width:100%;margin-top:10px}
.campaign-chapter{overflow:hidden;border:1px solid var(--cabinet-outline);border-radius:16px;margin:0 0 19px;background:var(--cabinet-card)}
.campaign-chapter-art{height:126px;position:relative;overflow:hidden;background:#4e455d}
.campaign-chapter-art::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,#181a3466)}
.campaign-chapter-art img{width:100%;height:100%;object-fit:cover;object-position:50% 22%;display:block}
.campaign-number{position:absolute;left:16px;bottom:8px;z-index:1;font:37px/1.2 var(--serif);color:#fff1d8;text-shadow:0 2px 7px #251e35}
.campaign-chapter-status{position:absolute;bottom:14px;right:14px;z-index:1;background:#faf2e8ed;color:#745b80;font-size:9px;padding:3px 10px;border:1px solid #f0d9bd;border-radius:20px;letter-spacing:.4px}
.campaign-chapter-body{padding:16px}
.campaign-chapter .sheet-kicker{font-size:8px;letter-spacing:1.1px}
.campaign-chapter h3,.campaign-opening h3{font:26px/1.2 var(--serif);margin:5px 0 9px;color:var(--cabinet-deep)}
.campaign-table-label{font-size:9px;color:var(--cabinet-faint);line-height:1.7;margin:9px 0}
.campaign-goal{padding:11px 12px;border:1px solid var(--cabinet-outline);border-radius:9px;background:var(--cabinet-soft);font-size:12px;line-height:1.55;color:var(--cabinet-deep);margin:13px 0}
.campaign-goal>span{display:block;text-transform:uppercase;font-size:8px;letter-spacing:1px;color:var(--cabinet-accent);margin-bottom:4px}
.campaign-best{font-size:9px;color:var(--cabinet-faint);line-height:1.7;margin:10px 0}
.campaign-card-actions{display:grid;gap:8px;margin-top:14px}
.campaign-card-actions>button{width:100%;margin:0;height:40px;font-size:12px}
.campaign-lock-note{display:block;text-align:center;font-size:9px;line-height:1.6;margin-top:9px;color:var(--cabinet-faint)}
.campaign-chapter.is-locked .campaign-chapter-art img{filter:saturate(.55) brightness(.8)}
.campaign-opening-art{height:175px;margin:-19px -21px 22px;overflow:hidden}
.campaign-opening-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 22%}
.campaign-prose{font:16px/1.75 var(--serif);margin:17px 0;color:var(--cabinet-accent)}
.campaign-run-info,.campaign-result{position:relative;border:1px solid var(--cabinet-outline);border-radius:14px;background:var(--cabinet-card);padding:17px;margin:0 0 18px;overflow:hidden}
.campaign-result.is-clear{background:linear-gradient(150deg,var(--cabinet-soft),var(--cabinet-card))}
.campaign-result h3,.campaign-run-info h3{font:26px/1.2 var(--serif);margin:9px 0 11px;color:var(--cabinet-deep)}
.campaign-result .sheet-kicker,.campaign-run-info .sheet-kicker{font-size:8px;letter-spacing:1px;padding-right:24px}
.campaign-result-mark{position:absolute;top:8px;right:16px;color:var(--cabinet-gold);font:35px var(--serif)}
.campaign-result-quote{font:italic 15px/1.65 var(--serif);color:var(--cabinet-accent)}
.campaign-result-stats,.campaign-run-info>p:last-child{font-size:10px;line-height:1.7;color:var(--cabinet-accent)}
.campaign-save-note{font-size:9px;line-height:1.7;color:var(--cabinet-faint);margin:12px 0}
.campaign-result>.primary,.campaign-result>.secondary{width:100%;height:40px;font-size:11px}
.v2-choice-group button:disabled{opacity:.5}
.v2-choice-group button:disabled[aria-pressed=true]{opacity:1}
.sheet-dialog.is-story{height:min(900px,calc(100dvh - max(16px,env(safe-area-inset-top))));max-height:calc(100dvh - max(16px,env(safe-area-inset-top)));overflow:hidden}
.is-story #sheet-content{height:100%;display:flex;flex-direction:column;min-height:0}
.is-story .sheet-header{position:relative;flex:0 0 auto;padding:12px 16px 10px;backdrop-filter:none}
.is-story .sheet-header h2{font:21px var(--serif);margin:0}
.is-story .sheet-body{flex:1;min-height:0;padding:0;overflow:hidden}
.story-view{display:flex;flex-direction:column;height:100%;min-height:0}
.story-art{position:relative;flex:1;min-height:100px;overflow:hidden;background:#3f3a51}
.story-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 32%}
.story-art::after{content:'';position:absolute;inset:70% 0 0;background:linear-gradient(transparent,#1d1939b0)}
.story-art-caption{position:absolute;z-index:1;left:20px;bottom:14px;color:#fff1dd;text-shadow:0 1px 7px #1a123f}
.story-art-caption span{display:block;font:8px var(--sans);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:3px}
.story-art-caption strong{font:21px var(--serif);color:#fff1dd}
.story-copy{flex:0 0 auto;padding:15px 20px 0}
.story-page-label{font-size:9px;letter-spacing:.5px;color:var(--cabinet-accent);margin-bottom:7px}
.story-copy p{font:14px/1.7 var(--serif);color:var(--cabinet-deep)}
.story-copy blockquote{font:italic 17px/1.4 var(--serif);margin:12px 0 7px;color:var(--cabinet-accent)}
.story-nav{display:grid;grid-template-columns:1fr 1.35fr;gap:10px;padding:10px 20px 0;flex:0 0 auto}
.story-nav>.primary,.story-nav>.secondary{height:42px;font-size:12px;min-width:0;width:100%;margin:0}
.story-progress{margin:0;flex:0 0 auto;padding:12px 0 15px}
@media(max-width:360px){.campaign-chapter-body{padding:14px}.campaign-chapter h3{font-size:23px}.campaign-intro h3{font-size:28px}.story-copy{padding:12px 16px 0}.story-copy p{font-size:13px;line-height:1.6}.story-copy blockquote{font-size:16px;margin-top:9px}.story-nav{padding:8px 16px 0;gap:8px}.story-nav>button{font-size:11px}}
@media(max-height:630px){.story-copy p{font-size:12px;line-height:1.5}.story-copy blockquote{font-size:14px;margin:8px 0 0}.story-copy{padding-top:9px}.story-page-label{margin-bottom:5px}.story-progress{padding:8px 0}.is-story .sheet-header{padding-top:8px;padding-bottom:7px}.story-art-caption strong{font-size:17px}}
