/* Compact reading layout; controls retain usable touch targets. */
html{font-size:14px}body{font-size:14px}
.viewport-shell .main p,.viewport-shell .main details{font-size:14px;line-height:1.6}
.viewport-shell .main .note,.viewport-shell .main .meta,.viewport-shell .main .statline{font-size:12px;line-height:1.55}
.viewport-shell .main h2{font-size:19px}.viewport-shell .main h3{font-size:16px}
.viewport-shell .main .section-top h1{font-size:22px;margin-bottom:10px}
.viewport-shell .main{padding:12px 16px 18px}
.viewport-shell .main .prose{font-size:14px;line-height:1.75;margin-bottom:12px}
.viewport-shell .main .location{padding:12px;margin-bottom:10px}
.viewport-shell .main .card{padding-block:10px}
.viewport-shell .main .story-door{min-height:56px;padding:8px 10px}
.viewport-shell .main .story-door strong{font-size:17px}
.viewport-shell .tabs button{font-size:12px;padding-block:6px}
.viewport-shell .main button,.viewport-shell .main summary{font-size:13px}
.viewport-shell .main button:not(.roster-tile){min-height:40px}
input,select,textarea{font-size:16px} /* Prevent iOS input focus zoom. */
.viewport-shell .main p{margin-block:8px}
.camp-status,.camp-orders,.camp-goals,.camp-duties{padding:12px;margin-bottom:12px}
.camp-stock{gap:8px 18px;margin:10px 0}.camp-stock span{font-size:12px}.camp-stock b{font-size:20px;margin-top:3px}
.building-grid,.raid-grid{gap:10px;margin-bottom:12px}.building-card{padding:12px}
.building-card p{min-height:0}.camp-goal{padding:10px 0}.camp-goal ul{font-size:12px;line-height:1.6}
.goal-heading>span,.camp-rank,.duty-yield span{font-size:12px}
.duty-grid{gap:8px}.duty-card{padding:10px}.steward-strip{margin:10px 0 12px}
.roster-book{margin-top:12px}.roster-heading{padding-bottom:8px}.roster-heading>strong{font-size:24px}
.roster-totals{margin-top:10px;gap:8px}.roster-filters{padding:10px;gap:8px}
.roster-filters label{font-size:12px;gap:4px}.roster-pager{margin:8px 0}
.roster-grid{gap:8px}.roster-tile>strong{font-size:18px}.roster-tile>span:not(.hero-portrait),.roster-tile>strong{margin:4px 8px 0}
.roster-title,.roster-tile-meta{font-size:12px;line-height:1.5}.roster-tile{padding-bottom:8px}
.quality-panel{padding:12px;margin:10px 0}.quality-badge{font-size:12px}
#roster-detail>.hero-card{padding:12px}.activity-text{font-size:12px;line-height:1.6}
.activity-entry{padding:6px 0}.activity-panel{grid-template-rows:44px 34px minmax(0,1fr) 22px}
.activity-heading{padding-inline:8px}.activity-heading h2{font-size:13px}
.log-toggle{display:none;min-height:44px;border:0;background:transparent;color:var(--green);font-size:12px;padding:0 6px}
.log-controls button{font-size:12px}.recruit-result .result-name{font-size:28px}
@media(max-width:900px) and (min-height:501px),(max-width:599px){
  .shell.viewport-shell{padding-inline:max(6px,env(safe-area-inset-left));grid-template-rows:44px 24px minmax(0,1fr) 28px}
  .viewport-shell .brand strong{font-size:18px}.viewport-shell .seal{width:24px;height:28px}
  .shell.viewport-shell .viewport-layout{grid-template-rows:48px minmax(0,1fr);gap:5px}
  .viewport-shell .main{padding:8px 10px 14px}
  .viewport-shell .main p,.viewport-shell .main details{font-size:13px}
  .viewport-shell .main .note,.viewport-shell .main .meta,.viewport-shell .main .statline{font-size:12px}
  .viewport-shell .main .section-top h1{font-size:20px;margin-bottom:8px}
  .viewport-shell .main .prose{font-size:14px;line-height:1.7}
  .viewport-shell .main .location{padding:10px}.viewport-shell .main .story-door strong{font-size:16px}
  .viewport-shell .tabs button{font-size:11px;min-height:44px}
  .viewport-shell .main button:not(.roster-tile){min-height:44px}
  .activity-heading{gap:4px}.activity-heading h2{margin-right:auto}
  .log-toggle{display:block;order:2}.log-latest{order:1;font-size:11px}
  html:not([data-log-expanded=true]) .activity-panel{grid-template-rows:44px}
  html:not([data-log-expanded=true]) .activity-panel>.log-controls,
  html:not([data-log-expanded=true]) .activity-panel>.activity-list,
  html:not([data-log-expanded=true]) .activity-panel>.activity-caption{display:none}
  html:not([data-log-expanded=true]) .activity-panel .log-latest{display:none}
  .roster-tile>strong{font-size:18px}.roster-heading>strong{font-size:22px}
  .viewport-shell .opening h1{font-size:23px}.viewport-shell .opening-lines{font-size:15px}
  .recruit-result .result-name{font-size:26px}
}

.camp-rulebook summary{min-height:44px;display:flex;align-items:center;cursor:pointer}.camp-rulebook summary::before{content:"▸";margin-right:6px}.camp-rulebook[open] summary::before{content:"▾"}.journey-sections,.page-sections{top:-12px;padding-block:5px}
@media(max-width:900px){.journey-sections,.page-sections{top:-8px}}

/* Main-panel phone density; header, navigation and dialogs keep their own scale. */
@media(max-width:900px){
 .viewport-shell #main{font-size:12px;line-height:1.45;padding:6px 7px 8px}
 .viewport-shell #main :is(p,details,li){font-size:12px;line-height:1.45}
 .viewport-shell #main p{margin-block:4px}
 .viewport-shell #main [data-page-section]{padding-top:0}
 .viewport-shell #main :is(.note,.meta,.statline){font-size:11.5px;line-height:1.4}
 .viewport-shell #main h2{font-size:15px;line-height:1.35;margin-block:5px}
 .viewport-shell #main h3{font-size:14px;line-height:1.35;margin-block:4px}
 .viewport-shell #main .section-top h1{font-size:18px;line-height:1.35;margin-bottom:5px}
 .viewport-shell #main .section-top{margin-bottom:6px}
 .viewport-shell #main .prose{font-size:13px;line-height:1.55;margin-bottom:7px}
 .viewport-shell #main :is(.idle-card,.realm-card,.building-card,.duty-card,.location){padding:7px 8px;margin-block:5px}
 .viewport-shell #main :is(.camp-status,.camp-orders,.camp-goals,.camp-duties){padding:8px;margin-bottom:7px}
 .viewport-shell #main :is(.building-grid,.raid-grid,.duty-grid){gap:6px;margin-bottom:7px}
 .viewport-shell #main .actions{gap:5px;margin-block:5px}
 .viewport-shell #main button:not(.roster-tile){min-height:36px;padding:4px 8px;font-size:12px;line-height:1.35}
 .viewport-shell #main summary{font-size:12px;min-height:30px;line-height:1.45;padding-block:4px}
 .viewport-shell #main details{margin-block:5px}
 .viewport-shell #main select{min-height:36px;font-size:13px;line-height:1.35;padding:4px 7px}
 .viewport-shell #main .section-picker{gap:6px;padding-block:2px;margin-bottom:5px}
 .viewport-shell #main .section-picker label{margin:0}
 .viewport-shell #main .region-camp-controls{gap:7px;margin-bottom:5px}
 .viewport-shell #main .region-camp-controls label{margin:0;font-size:11.5px;line-height:1.4}
 .viewport-shell #main .region-camp-controls select{min-height:34px!important;font-size:12px;margin:2px 0}
 .viewport-shell #main .region-camp .idle-card{padding:7px;margin:4px 0}
 .viewport-shell #main .region-camp :is(p,.note){font-size:11.5px;line-height:1.4;margin-block:4px}
 .viewport-shell #main .region-camp h3{font-size:13px;margin:0 0 4px}
 .viewport-shell #main .region-camp .actions{margin-block:4px}
 .viewport-shell #main .region-camp-detail summary{min-height:28px}
}
