:root{
  --font-caption:14px;
  --font-label:13px;
  --font-body:16px;
  --font-control:15px;
}

body{
  font-size:var(--font-body)!important;
  line-height:1.55;
}

/* Body copy must remain readable across every GUSTAV workspace. */
p,
li,
dd,
.workspacesubtitle,
.loginsubtitle,
.loginerror,
.discussionmessage p,
.discussiondetailsummary,
.directoryfavoritesintro,
.directoryfavoritesnotice,
.directoryavailabilitynotice,
.directorydetailfield strong,
.realestatedetailnotice,
.realestatemarketdetailnotice,
.staylistempty,
.staylegacybanner span,
.staypanelhead p,
.stayfinancenote,
.stayfinancealert span,
.stayrequestresolution,
.stayclosurechecks label,
.staypayoutboundary,
.stayprovenance,
.staypanelmessage,
.stayitinerarysharehead > div > span,
.stayitineraryemailpreview pre{
  font-size:var(--font-body)!important;
  line-height:1.55;
}

/* Secondary information stays visibly subordinate without becoming tiny. */
small,
time,
code,
.loginforgot,
.apputilityrate,
.apputilitysession,
.apputilitylink,
.apputilityvalue,
.discussionitemmeta,
.discussionmessagesource,
.directoryupdated,
.directorygallerycounter,
.realestatemarketdetailmeta,
.staylistitem small,
.stayconciergeidentity small,
.stayconciergefooter small,
.stayitinerarydraftbar small,
.stayitinerarycontent > small,
.stayrequestcontent > small,
.stayrequestcontent > span,
.stayclosuresummary span,
.staypayoutsummary span,
.staypayoutblockers span,
.staynotificationpreview span,
.stayauditevent span,
.stayauditevent time,
.stayitineraryshare > small,
.stayitineraryemailpreview > small{
  font-size:var(--font-caption)!important;
  line-height:1.45;
}

/* Labels remain compact, but no operational label should render below 13 px. */
label,
th,
.logineyebrow,
.loginprivacy,
.apputilitylabel,
.workspaceeyebrow,
.staybadge,
.staydemobadge,
.staylistitem > span,
.staystatefact span,
.staysummaryfact span,
.staypanelhead > span,
.staycompactsummary b,
.staytimelinephase > span,
.stayconciergelead,
.stayfinanceevidence > span,
.stayitinerarydraftbar > span,
.stayitineraryday > header span,
.stayitinerarycontent > span,
.stayrequestmeta,
.stayformfield > span,
.staycontractfieldset legend{
  font-size:var(--font-label)!important;
  line-height:1.35;
}

input,
select,
textarea{
  font-size:var(--font-body)!important;
  line-height:1.5;
}

td{
  font-size:15px;
  line-height:1.5;
}

.staylistitem strong,
.staystatefact strong,
.staysummaryfact strong,
.staytimelinephase h4,
.stayconciergeidentity strong,
.stayfinancialfact span,
.stayfinancialfact strong,
.stayfinancealert strong,
.stayfinanceevidence strong,
.stayitinerarypublished strong,
.stayitineraryday > header strong,
.stayitinerarytime,
.stayitinerarycontent > strong,
.stayrequestmeta strong,
.stayrequestcontent > strong,
.staydocumentpickerbody strong,
.stayclosuresummary strong,
.staypayoutsummary strong,
.staypayoutblockers strong,
.staynotificationpreview strong,
.stayauditevent strong,
.staypayoutcomplete,
.stayitinerarysharehead > div > strong,
.stayitineraryemailpreview header strong,
.stayitineraryattachment strong{
  font-size:var(--font-body)!important;
  line-height:1.4;
}

/* The top utility bar is deliberately secondary and keeps its original density. */
.apputilityrate{
  font-size:10px!important;
  line-height:1.35;
}

.apputilitylabel,
.apputilitymeta{
  font-size:9px!important;
}

.apputilityvalue{
  font-size:11px!important;
}

.apputilitysession,
.apputilitylink{
  font-size:10px!important;
  line-height:1.2;
}

.apputilityhealthstatus{
  font-size:8px!important;
}

.stayitineraryshareactions button,
.stayitineraryemailpreview button{
  font-size:var(--font-control)!important;
  line-height:1.25;
}

@media(max-width:760px){
  :root{
    --font-caption:14px;
    --font-label:13px;
    --font-body:16px;
    --font-control:15px;
  }
}
