*{box-sizing:border-box} :root{--bg:#1b1b20;--panel:#16161b;--raised:#222228;--border:#34343d;--ink:#e7e3ee;--muted:#a9a4b6;--accent:#c5acf7;--active:#322a42;--gold:#d6bf87;--green:#9dceba;font:15px/1.6 "Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--bg)}
body{margin:0} a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}button,input,select{font:inherit}button,select{cursor:pointer}button{color:var(--ink)}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button{border:1px solid var(--border);border-radius:6px;background:var(--raised);padding:7px 12px}h1,h2,h3,p{margin-top:0}h1{font:500 clamp(30px,3.1vw,44px)/1.18 Georgia,serif;letter-spacing:-.6px;margin-bottom:16px}h2{font:500 25px/1.35 Georgia,serif;margin-bottom:18px}h3{font-size:16px;font-weight:600;margin-bottom:8px}p{margin-bottom:18px}small,.small{font-size:13px}.muted{color:var(--muted)}.eyebrow{color:var(--gold);font-size:11px;text-transform:uppercase;letter-spacing:2px;font-weight:600;margin-bottom:15px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}.skip{position:absolute;top:-80px;z-index:30;padding:12px;background:var(--raised)}.skip:focus{top:0}
.demo-bar{min-height:42px;padding:7px 23px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:#28232f;border-bottom:1px solid #40354f;font-size:12px}.demo-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:8px}.demo-bar label{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.demo-bar select{max-width:100%;color:var(--ink);background:transparent;border:1px solid #574764;padding:3px 7px;border-radius:5px;font-size:12px}.demo-bar option{background:var(--panel)}
.shell{display:grid;grid-template-columns:242px minmax(0,1fr);min-height:calc(100vh - 42px)}.sidebar{background:var(--panel);border-right:1px solid var(--border);padding:28px 18px;min-width:0}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);margin:0 8px 30px;font-size:16px;font-weight:600}.brand-mark{color:var(--accent);font-size:31px;font-weight:400;line-height:1}.library-link{display:block;padding:8px 10px;color:var(--muted);font-size:13px;margin-bottom:25px}.nav-heading{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);padding:0 10px;margin:25px 0 10px}.campaign-name{padding:0 10px;font-size:16px;font-weight:600;margin-bottom:3px}.sidebar-status{margin:0 10px 18px;font-size:11px;color:var(--green)}.nav-link{display:flex;align-items:center;gap:11px;color:var(--muted);padding:9px 11px;border-radius:5px;font-size:13px;margin:3px 0}.nav-link.active{background:var(--active);color:var(--accent)}.nav-link:hover{background:#28262f;text-decoration:none;color:var(--ink)}.nav-symbol{font-size:15px;width:17px;text-align:center;opacity:.8}.session-nav{display:block;padding:9px 10px 9px 17px;border-left:1px solid #3e384b;margin-left:15px;font-size:12px;color:var(--muted)}.session-nav.active{border-color:var(--accent);color:var(--ink);background:#24212d}.sidebar-bottom{margin:35px 10px 0;padding-top:20px;border-top:1px solid var(--border);color:var(--muted);font-size:11px}.avatar{display:inline-grid;place-items:center;border:1px solid #5b506d;border-radius:50%;width:26px;height:26px;background:#332b42;color:var(--accent);margin-right:8px}
.workspace{min-width:0}.topbar{min-height:70px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 34px;border-bottom:1px solid var(--border)}.breadcrumb{font-size:12px;color:var(--muted);min-width:0;overflow-wrap:anywhere}.breadcrumb a{color:var(--muted)}.breadcrumb span{padding:0 9px;color:#65606f}#search-form{display:flex;align-items:center;gap:9px;border:1px solid var(--border);padding:4px 7px 4px 12px;border-radius:6px;width:300px;max-width:100%;flex-shrink:0}#search-form>span{color:var(--muted);font-size:23px;line-height:1}#search{width:100%;min-width:0;border:0;outline-offset:1px;background:transparent;color:var(--ink);font-size:12px;padding:5px}#search-form button{font-size:11px;border:0;padding:4px 6px;background:#34303e}.icon-button{display:none}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 245px;max-width:1500px;margin:auto}main{padding:48px clamp(24px,4vw,64px) 70px;min-width:0;outline:0}main>p.intro{max-width:610px;color:var(--muted);font-size:15px}.context{padding:48px 25px 30px 0;font-size:12px;min-width:0}.context-section{border-left:1px solid var(--border);padding-left:22px;margin-bottom:30px}.context h2{font:600 10px/1.5 "Segoe UI",sans-serif;color:var(--muted);text-transform:uppercase;letter-spacing:1.6px;margin-bottom:16px}.context p{color:var(--muted)}.context a{display:block;margin:9px 0}.context .count{float:right;color:var(--muted)}.context .mini-note{color:var(--ink);font-family:Georgia,serif;font-size:14px;border-left:2px solid #695482;padding-left:12px}.context .context-kind{font-size:10px;color:var(--muted);margin-left:5px}footer{border-top:1px solid var(--border);font-size:11px;color:var(--muted);padding:17px 34px;display:flex;justify-content:space-between;gap:10px}
.hero{position:relative;overflow:hidden;background:linear-gradient(110deg,#302a3c,#24252f);border:1px solid #4b4059;border-radius:8px;padding:30px 28px;margin:30px 0 36px}.hero:after{content:"";position:absolute;width:200px;height:200px;border:1px solid #71687e;border-radius:50%;right:-70px;top:-80px;box-shadow:0 0 0 24px #ffffff03,0 0 0 25px #71687e30,0 0 0 65px #ffffff02,0 0 0 66px #71687e20;pointer-events:none}.hero>*{position:relative;z-index:1}.hero h2{font-size:28px}.hero p{color:var(--muted);margin-bottom:20px}.primary{display:inline-flex;align-items:center;gap:25px;background:var(--accent);color:#22182e;padding:9px 15px;border-radius:5px;font-size:12px;font-weight:600}.primary:hover{color:#22182e;text-decoration:none;background:#d4bffd}.section-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:35px 0 12px}.section-top h2{margin:0}.section-top a{font-size:12px}.timeline{list-style:none;margin:0;padding:0}.timeline li{border-bottom:1px solid var(--border)}.session-row{display:grid;grid-template-columns:33px minmax(0,1fr) auto;align-items:center;gap:14px;padding:18px 0;color:var(--ink)}.session-row:hover{text-decoration:none}.session-row:hover strong{color:var(--accent)}.session-number{color:#8e809d;font:20px Georgia,serif}.session-row strong{display:block;font-size:14px;font-weight:500}.session-row small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.arrow{color:var(--accent)}.tag{display:inline-block;padding:2px 8px;border:1px solid #45404e;border-radius:4px;font-size:11px;color:var(--muted);margin:0 5px 6px 0}.tag.active{color:var(--green);border-color:#3d584b}.intro-meta{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:22px;color:var(--muted);font-size:12px}.intro-meta .dot{color:#665f73}
.type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:20px}.type-card{padding:17px;border:1px solid var(--border);border-radius:5px;color:var(--ink)}.type-card:hover{background:#26232e;text-decoration:none}.type-card span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.type-card strong{font-size:13px;font-weight:500}.type-card .type-icon{font-size:20px;color:var(--accent);margin-bottom:7px}.filters{display:flex;gap:6px;flex-wrap:wrap;margin:24px 0}.filter{padding:6px 12px;border:1px solid transparent;color:var(--muted);font-size:12px;border-radius:5px}.filter[aria-current=true]{background:var(--active);color:var(--accent);border-color:#4b3e5e}.filter:hover{text-decoration:none;background:#292530}.entity-list{list-style:none;padding:0;margin:0}.entity-list li{border-bottom:1px solid var(--border)}.entity-row{display:grid;grid-template-columns:31px minmax(0,1fr) auto;gap:12px;align-items:center;padding:18px 0;color:var(--ink)}.entity-row:hover{text-decoration:none}.entity-row strong{font-size:14px;font-weight:500;color:var(--accent)}.entity-row .summary{display:block;color:var(--muted);font-size:12px;margin-top:4px}.entity-row .type-label{font-size:10px;color:var(--muted)}.entity-symbol{color:var(--accent);font-size:20px}.alias-line{font-size:12px;color:var(--muted);padding:13px 0 22px;border-bottom:1px solid var(--border);margin-bottom:25px}.alias-line span{color:var(--ink)}.prose{font:18px/1.95 Georgia,serif;letter-spacing:.05px;max-width:700px}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:#827095;text-underline-offset:4px}.prose .ambiguous{border-bottom:1px dotted #b6a680;color:var(--ink)}.recap{border-left:2px solid #7b669e;padding:6px 0 1px 22px;margin:20px 0 33px}.recap .eyebrow{margin-bottom:12px;color:var(--muted)}.chapter{padding:13px 0 25px;scroll-margin-top:24px}.chapter h2{font-size:27px}.chapter:target,.chapter.is-target{border-left:2px solid var(--accent);padding-left:18px}.chapter-label{color:var(--muted);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:12px}.link-target{background:#c5acf722;outline:1px solid #c5acf755;border-radius:3px}.toc{border:1px solid var(--border);border-radius:5px;padding:14px 18px;margin:25px 0 30px;font-size:12px}.toc summary{cursor:pointer;color:var(--muted)}.toc a{display:block;margin-top:10px}.source-row{border-bottom:1px solid var(--border);padding:19px 0}.source-meta{font-size:11px;color:var(--muted);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px}.source-link{font-size:14px;display:inline-block;margin-bottom:8px}.source-quote{font:16px/1.8 Georgia,serif;color:#ccc6d6;margin:0}.source-quote mark{background:#c5acf71a;color:var(--accent);padding:1px 2px;border-radius:2px}.source-actions{margin-top:9px;font-size:11px}.notes{border-top:1px solid var(--border);margin-top:35px;padding-top:25px}.note{padding:17px 19px;background:#23212a;border:1px solid #393240;border-radius:6px;margin:15px 0}.note-header{font-size:11px;color:var(--muted);margin-bottom:9px;display:flex;align-items:center;gap:8px}.note p{font-size:13px;margin:0 0 10px}.note details{font-size:11px;color:var(--muted)}.note summary{cursor:pointer}.note ol{padding-left:20px}.empty{border:1px dashed #48414f;padding:24px;color:var(--muted);border-radius:6px;font-size:13px;margin:20px 0}.campaign-grid{display:grid;gap:15px;margin-top:25px}.campaign-card{border:1px solid var(--border);border-radius:7px;overflow:hidden;display:grid;grid-template-columns:90px minmax(0,1fr)}.campaign-art{display:grid;place-items:center;background:linear-gradient(140deg,#463552,#262935);font-size:36px;color:#d9c6ef}.campaign-art.paused{background:linear-gradient(130deg,#3c3d32,#25262a);color:#c9c5a4}.campaign-art.archived{background:linear-gradient(130deg,#293e40,#212729);color:#b1cccc}.campaign-card-content{padding:22px}.campaign-card h2{font-size:24px;margin-bottom:8px}.campaign-card p{font-size:12px;color:var(--muted);margin-bottom:15px}.search-hit{border-bottom:1px solid var(--border);padding:19px 0}.search-hit a{font-size:16px}.search-hit p{font-size:13px;color:var(--muted);margin:7px 0 0}.search-hit .eyebrow{margin:0 0 7px;color:var(--muted);font-size:9px}.search-heading{font-size:11px;text-transform:uppercase;color:var(--muted);letter-spacing:1.4px;margin-top:35px}.note-caption{font-size:11px;color:var(--muted)}.jump-link{font-size:12px}.notice{padding:12px 15px;border-left:2px solid var(--gold);background:#b9a06b0a;font-size:12px;color:var(--muted);margin:20px 0}
@media(min-width:1700px){.content-grid{grid-template-columns:minmax(0,1fr) 285px}.context{padding-right:35px}}
@media(max-width:1180px){.content-grid{grid-template-columns:minmax(0,1fr)}.context{padding:0 35px 30px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.context-section{margin-bottom:10px}.shell{grid-template-columns:220px minmax(0,1fr)}main{padding-top:35px}.topbar{padding:15px 25px}.breadcrumb{max-width:210px}#search-form{width:250px}}
@media(max-width:760px){.shell{display:block}.sidebar{display:none}.shell.menu-open .sidebar{display:block;border-bottom:1px solid var(--border)}.sidebar-bottom{display:block}.topbar{padding:12px 18px;gap:12px;flex-wrap:wrap}.icon-button{display:block;flex-shrink:0;padding:5px 9px}.breadcrumb{flex:1;max-width:none}#search-form{width:100%;order:3}.demo-bar{padding:10px 18px;align-items:flex-start;flex-wrap:wrap;gap:7px}.demo-bar label{font-size:11px;gap:8px}main{padding:30px 21px 40px}.context{padding:0 21px 25px;grid-template-columns:1fr}.hero{padding:25px 21px}.type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.prose{font-size:17px}.campaign-card{grid-template-columns:55px minmax(0,1fr)}.campaign-card-content{padding:18px}.campaign-art{font-size:26px}.campaign-card h2{font-size:23px}.session-row{grid-template-columns:25px minmax(0,1fr) auto;gap:10px}footer{padding:16px 21px;flex-wrap:wrap}footer>span{display:none}.entity-row{grid-template-columns:24px minmax(0,1fr)}.entity-row>.type-label{grid-column:2}.intro-meta{gap:7px}.section-top{gap:10px}.section-top h2{font-size:23px}.source-quote{font-size:16px}button,input,select{min-height:44px}.icon-button{min-width:44px}#search{font-size:16px}.filter{padding:8px 11px}}
@media(prefers-reduced-motion:no-preference){.primary,.entity-row,.nav-link,.type-card{transition:background .15s,color .15s}}


/* Server-rendered application additions. */
.login-form{max-width:420px;display:grid;gap:10px;margin:28px 0}.login-form input{color:var(--ink);background:var(--raised);border:1px solid var(--border);border-radius:5px;padding:10px;font:inherit}.login-form label{font-size:13px;color:var(--muted)}.login-form .primary{border:0;margin-top:15px;justify-content:center}.validation{color:#f1aaaa;font-size:13px}.validation ul{padding-left:20px}.sidebar-bottom form{margin-top:12px}.prose{white-space:pre-line}.source-quote mark{white-space:pre-wrap}.context-section .context-kind{display:inline;margin-left:7px}.icon-button{min-width:44px;min-height:44px}.link-target{scroll-margin-top:100px}.chapter.is-target{scroll-margin-top:40px}.sidebar-bottom{overflow-wrap:anywhere}

.publication-text{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;padding:1rem;background:var(--panel,#f5f3ed)}.publication-change{margin:1rem 0;padding:1rem;border:1px solid #ddd}.publication-change summary{cursor:pointer;font-weight:600}

/* Reading a world page: profile first; session history stays compact like a wiki. */
.wiki-page{max-width:860px;font:16px/1.8 "Segoe UI",system-ui,sans-serif;color:var(--ink)}
.wiki-page h1{font:650 34px/1.2 "Segoe UI",sans-serif;letter-spacing:-.5px;margin:0 0 17px}
.wiki-page h2{font:650 23px/1.4 "Segoe UI",sans-serif;margin:0 0 19px}
.wiki-page h3{font:600 19px/1.5 "Segoe UI",sans-serif;margin:0 0 16px}
.wiki-header{margin-bottom:37px}.wiki-header .eyebrow{margin-bottom:12px}
.wiki-breadcrumb{font-size:13px;margin-bottom:10px}.wiki-aliases{font-size:12px;color:var(--muted);margin:0}
.wiki-section{margin:0 0 40px;scroll-margin-top:24px}.wiki-paragraph p,.wiki-section>p{margin:0 0 21px}
.wiki-page p,.wiki-brief{overflow-wrap:anywhere}.wiki-page p a,.wiki-brief a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:#86729c}
.wiki-recent{padding-left:22px;line-height:1.9;margin:0 0 15px}.wiki-recent span{color:var(--muted)}
.wiki-history-link{font-size:13px}.wiki-session{margin-top:31px;scroll-margin-top:22px}
.wiki-brief{padding-left:21px;margin:0 0 22px}.wiki-brief li{padding-left:2px;margin:6px 0}
.wiki-chapters{margin:18px 0 28px;background:#242734;border:1px solid #32384b;border-radius:5px;font-size:13px}
.wiki-chapters summary{padding:12px 15px;cursor:pointer;color:var(--accent);font-weight:500}
.wiki-chapters ul{margin:3px 20px 18px;padding-left:20px}.wiki-chapters li{margin:6px 0}
.wiki-chapters[open] summary{border-bottom:1px solid #343a4b}
.wiki-historical{background:transparent;border-color:var(--border)}
.wiki-no-brief,.profile-missing{font-size:12px;line-height:1.7;color:var(--muted)}
.profile-missing{padding-left:12px;border-left:2px solid #59505f}
.uncertain-label{color:var(--gold);font-size:12px;margin-right:6px}
.wiki-outline{position:sticky;top:25px}
@media(max-width:760px){.wiki-page{font-size:15px;line-height:1.85}.wiki-page h1{font-size:30px}.wiki-page h2{font-size:22px}.wiki-page h3{font-size:17px}.wiki-section{margin-bottom:31px}.wiki-chapters summary{min-height:44px}.wiki-header{margin-bottom:30px}}

/* Keep campaign navigation available while reading long pages. */
@media (min-width:761px){
  .sidebar{position:sticky;top:0;align-self:start;box-sizing:border-box;height:100vh;height:100dvh;overflow-y:auto}
}

/* Touch targets and long campaign names on narrow screens. */
@media (max-width:760px){
  .sidebar .nav-link,.sidebar .session-nav,.sidebar .library-link{min-height:44px;overflow-wrap:anywhere}
  h1,h2,h3,.campaign-name,.session-row strong,.entity-row strong,.search-hit,.wiki-chapters li,.context-section{overflow-wrap:anywhere}
}

/* Publication history and readable before/after comparisons. */
.publication-history{list-style:none;padding:0;margin:24px 0 35px}.publication-history li{border-bottom:1px solid var(--border);padding:18px 0;overflow-wrap:anywhere}.publication-history p{margin:8px 0}.revision-link{display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}.revision-link span{font-size:13px;color:var(--muted)}.publication-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:24px 0}.publication-actions form{margin:0}.comparison-form{display:grid;gap:10px;max-width:520px;margin:25px 0}.comparison-form select{width:100%;min-width:0;background:var(--raised);color:var(--ink);border:1px solid var(--border);padding:10px}.comparison-form button{justify-self:start}.publication-change{border-color:var(--border);border-radius:5px}.publication-change summary{overflow-wrap:anywhere;min-height:44px}.change-label{font-size:11px;font-weight:400;color:var(--muted);margin-left:8px}.publication-diff{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:22px}.publication-diff section{min-width:0}.publication-diff h3{font-size:13px;color:var(--muted)}.publication-diff pre{font-size:13px;margin:0;max-height:650px;overflow:auto}.publication-status{margin:20px 34px}
@media(max-width:1000px){.publication-diff{grid-template-columns:minmax(0,1fr)}}
@media(max-width:760px){.publication-change{padding:12px}.publication-status{margin:15px 21px}.publication-actions button{min-height:44px}}

/* Administration and invitation forms use the existing reading palette. */
.admin-panel{border:1px solid var(--border);border-radius:6px;padding:20px;margin:18px 0;overflow-wrap:anywhere}.admin-panel h2{font-size:21px}.admin-panel h3{margin:0 0 15px}.admin-panel .publication-actions{margin:12px 0}.admin-form{display:grid;gap:10px;max-width:480px}.admin-form input:not([type=checkbox]),.admin-form select,.admin-panel select,.share-link{font:inherit;color:var(--ink);background:var(--raised);border:1px solid var(--border);border-radius:4px;padding:9px;max-width:100%;min-width:0}.share-link{width:100%;font-size:13px}.admin-form button{justify-self:start}.character-assignment{border-bottom:1px solid var(--border);padding:12px 0}.admin-panel input[type=checkbox]{vertical-align:middle}.admin-panel label{overflow-wrap:anywhere}
@media(max-width:760px){.admin-panel{padding:15px}.admin-form input,.admin-form select,.admin-panel select{font-size:16px}.admin-panel button{min-height:44px}.admin-panel .publication-actions form{width:100%}}

/* Identity renders a placeholder list when there are no validation errors. */
.validation-summary-valid,.field-validation-valid{display:none}

/* Player notes are separate from published wiki content. */
.campaign-note{padding:16px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.note-meta{font-size:12px;color:var(--muted)}.note-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.note-editor{border:1px solid var(--border);padding:20px;border-radius:6px;margin:24px 0}.note-editor form{display:grid;gap:12px}.note-editor textarea{box-sizing:border-box;width:100%;min-width:0;resize:vertical;background:var(--raised);color:var(--ink);border:1px solid var(--border);padding:12px;font:inherit;line-height:1.6}.note-editor button{justify-self:start}.note-history details{margin:12px 0}.note-history summary{overflow-wrap:anywhere;min-height:44px}.notes-panel{margin-top:32px}.notes-panel a{font-size:13px}
@media(max-width:760px){.note-editor{padding:15px}.note-editor textarea{font-size:16px}.note-editor button{min-height:44px}.notes-panel .section-top{flex-wrap:wrap;gap:10px}}

/* Private campaign images retain their full aspect ratio. */
.image-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:22px;margin:20px 0}.image-gallery figure{min-width:0;margin:0;max-width:420px;overflow-wrap:anywhere}.image-gallery img{display:block;width:100%;height:240px;object-fit:contain;background:var(--raised);border:1px solid var(--border);border-radius:5px}.image-gallery figcaption{margin-top:10px;font-size:14px}.image-gallery form{margin-top:12px}.entity-images h2{font-size:22px}
@media(max-width:760px){.image-gallery{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:15px}.image-gallery img{height:210px}.image-gallery button{min-height:44px}.entity-images .section-top{flex-wrap:wrap;gap:10px}}

/* In-page image viewer: fit the screen first, scroll at native size when enlarged. */
.image-preview-open{overflow:hidden}
.image-viewer{box-sizing:border-box;width:calc(100vw - 32px);max-width:none;height:calc(100vh - 32px);height:calc(100dvh - 32px);max-height:none;margin:auto;padding:16px;background:#15161b;color:var(--ink);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.image-viewer[open]{display:flex;flex-direction:column;gap:12px}
.image-viewer::backdrop{background:rgba(0,0,0,.86)}
.image-viewer-toolbar{display:flex;align-items:center;gap:12px;flex-shrink:0}
.image-viewer-toolbar h2{flex:1;min-width:0;margin:0;font:600 16px/1.4 system-ui,sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.image-viewer-toolbar button{min-height:44px;flex-shrink:0}
.image-viewer-stage{flex:1;min-height:0;overflow:auto;display:flex;align-items:center;justify-content:center;overscroll-behavior:contain}
.image-viewer-stage img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;flex-shrink:0}
.image-viewer-stage img[hidden]{display:none}
.image-viewer-stage.is-zoomed{display:block}
.image-viewer-stage.is-zoomed img{max-width:none;max-height:none;margin:auto}
.image-viewer-status{margin:0;color:var(--muted);flex-shrink:0}
.image-gallery a[data-image-preview]{display:block;cursor:zoom-in}
@media(max-width:600px){.image-viewer{width:100%;height:100vh;height:100dvh;padding:10px;border-radius:0}.image-viewer-toolbar{gap:8px;flex-wrap:wrap}.image-viewer-toolbar h2{flex-basis:100%;font-size:14px}.image-viewer-toolbar button{font-size:13px}}

/* Player reports share the campaign reading and editing styles. */
.report-editor input,.report-editor select{box-sizing:border-box;width:100%;min-width:0;background:var(--raised);color:var(--ink);border:1px solid var(--border);padding:12px;font:inherit}
.report-body{margin:28px 0;font-size:16px}.reports-panel{margin:32px 0}.reports-panel .section-top{flex-wrap:wrap;gap:12px}
@media(max-width:760px){.report-editor input,.report-editor select{font-size:16px}}
