/*  asmeconf-style.css

    v1.47, 2026-10-31
	Author: John H. Lienhard
	License: MIT License, https://ctan.org/license/mit
    This css code styles the HTML rendering of asmeconf class
*/


/* --- Resilience & typography --- */

*, *::before, *::after { box-sizing: border-box; }
math, math * { box-sizing: content-box; }

html 
	{ 
    -webkit-text-size-adjust: 100%;
    -moz-text-size-adjust: none;
    text-size-adjust: 100%;
	}
:root
	{
	--ui-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", "DejaVu Sans", Arial, sans-serif;
	--ui-mono: ui-monospace, SFMono-Regular, Consolas, "DejaVu Sans Mono", "Liberation Mono", "Noto Sans Mono", Menlo, monospace;
	--math-font: "STIX Two Math", "Latin Modern Math", "XITS Math", "Cambria Math", math;
    --math-fallback-regular: var(--math-font);
    --math-fallback-bold:    var(--math-font);
	--code-color:         #3333b3;   /* sometimes called 'structure' */
	--footnote-color:     #1f4e79;   /* a medium grayish blue */
	--fg-color:           #111;      
	--bg-color:           #fff;
	--hr-color:           #ccc;
	--link-color:         #0033a0;   /* #0000ee, browser defaults */
	--link-visited-color: #663366;   /* #551a8b */
	--link-hover-color:   #0b0080;   /* #ee0000 */
	--xref-color:         #0033a0;   /* #0000ee */
	}

/* These settings partially mimic the default printed page size and width. Aims for sans serif font. */
body {
    font-family:    var(--ui-sans);
	font-size: 		12pt;       
	line-height: 	1.2;     	/* ~14pt leading */
	margin: 		36pt auto;  /* ~half-inch margins left/right, centered */
	max-width: 		min(75ch, 46rem);		/* ~75 characters per line; 46rem ≈ ~92pt*6.1 */
	hyphens: 		auto;
	overflow-wrap: 	anywhere; 				/* protect narrow columns */
	hanging-punctuation: first allow-end; 	/* improve ragged-right when present */
	color: var(--fg-color); 
	background: var(--bg-color);
}

/* Other color selectors */
h1,h2,h3,h4,
   div[data-pdf-se-type="Caption"] { color: var(--fg-color); }

hr { border-color: var(--hr-color); }

a[href]          { color: var(--link-color); text-decoration: underline; }
a[href]:visited  { color: var(--link-visited-color); }
a[href]:hover,
   a[href]:focus { color: var(--link-hover-color); }
a[href^="#"]     { color: var(--xref-color); }

/* prevent hanging-punctuation from reaching MathML operators (Safari) */
math, math * 
    {
    hanging-punctuation: none;
    }


/* Adjust fonts of title, prevent hyphenation */

div[data-pdf-se-type="Title"]
	{
	font-size: 20pt;
	font-weight: 700;
	hyphens: none;
	overflow-wrap: normal;
	word-break: keep-all;
	margin-top: 2em; 
	}


/* Reduce paragraph spacing inside Conference_information only */

div[data-pdf-se-type-original="Conference_information"] p 
	{
	margin-top: 0.2em;
	margin-bottom: 0.2em;
	}

div[data-pdf-se-type-original="Paper_number"] p 
	{
	font-weight: 600;
	font-size: 14pt;
	}

/* Authors (inline style) */

div[data-pdf-se-type-original="Authors"] 
	{
	}

/* Affiliations-group block with 3em horizontal padding */

div[data-pdf-se-type-original="Affiliations-group"] 
	{
	padding-left:  3em;
	padding-right: 3em;
	}
	
/* Affiliation (individual) */

part[data-pdf-se-type-original="Affiliation"] 
	{
	margin-top: 0.5em;
	}

/* Author_affiliation block with reduced par sep (for grid layout) */

div[data-pdf-se-type-original="Author_affiliation"]  p
	{
	margin-top: 0.2em;
	margin-bottom: 0.2em;
	}

/* Period and breakable space before 2nd+ footnotemark spans in Affiliation block */

div[data-pdf-se-type-original="Affiliations-group"]
  span[data-pdf-se-type-original="footnotemark"][data-pdf-se-type="Lbl"]:nth-of-type(n+2)::before 
  	{
	content: 	  ". ";
	position: 	  relative;
	top: 		  0em; 
    margin-right: 0em;
	}


/* Heading font weights */

h1[data-pdf-se-type="H1"],
h1[data-pdf-se-type-original="section-heading"],
h2[data-pdf-se-type="H2"],
h3[data-pdf-se-type="H3"],
h4[data-pdf-se-type="H4"] 
	{
	font-weight: 700;
	}

/* Heading sizes, margins */

h1[data-pdf-se-type="H1"],
h1[data-pdf-se-type-original="section-heading"]  
    { 
    font-size: 18pt; 	
    margin-top: 2em;
    }
h2[data-pdf-se-type="H2"]
    {
    font-size: 16pt;
	margin-top: 1.5em;   
    }
/* Keep h3 (subsection) inline with text that follows */
h3[data-pdf-se-type="H3"] 
   { 
   font-size: 12pt; 
   margin-top: 1.2em;
   display: inline-block;
   margin-right: 0.5em ;
   margin-bottom: 0em  ;
   text-align:    left ; 
   }
h3[data-pdf-se-type="H3"] + div[data-pdf-se-type-original="semantic-para"] 
   {
   display: inline;
   }
h3[data-pdf-se-type="H3"] + div[data-pdf-se-type-original="semantic-para"] > p 
    {
    display: inline;
    }
h4,h5 { font-size: 12pt;} /* Should not be used with this class */


/* Eliminate spurious horizontal space from some doc-pagebreaks. Do before next group. */

[role="doc-pagebreak"] {
    margin: 0 !important;
}

/* Numbered section titles are composed of two spans. The margin creates space between them. */

h1[data-pdf-se-type="H1"] > span:first-of-type  { margin-inline-end: 0.75em; }
h2[data-pdf-se-type="H2"] > span:first-of-type,
h3[data-pdf-se-type="H3"] > span:first-of-type  { margin-inline-end: 0.5em; }
h4[data-pdf-se-type="H4"] > span:first-of-type

/* core MathML */

math,
.math, .inline, .formula, .eq,
  span[data-pdf-se-type="Formula"] 
    {
    font-family: var(--math-font);
    }
    
/* bold/bold-italic variants (fallback styling; Unicode bold glyphs handle most cases) */
math [mathvariant="bold"],
  .math-bold            { font-weight: bold; }
  math [mathvariant="bold-italic"] 
    { 
    font-weight: bold; 
    font-style: italic; 
    }

/* Math, inline formula wrappers and SVG text inside headings and captions:
   - set math fallback font
   - request bold math face and normal style
   - inherit heading font-size and tighten line-height for math material */
:is(h1,h2,h3,h4,h5,figcaption,caption,[data-pdf-se-type="Caption"]) 
:is(
	math,
	.inline,
	span[data-pdf-se-type="Formula"],
	.formula,
	.math,
	.eq,
	svg text
	) 
	{
	font-family: 	var(--math-fallback-bold);
	font-weight: 	700;
	font-style: 	normal;
	line-height: 	1;
	font-size: 		inherit;
	}

/* Suppress over-stretching of multiline equations */
div[data-pdf-se-type="Formula"] 
    {
    display: flex;
    justify-content: center; /* Centers the whole equation block */
    width: 100%;
    }

div[data-pdf-se-type="Formula"] mtable.multline
    {
    width: auto !important; /* Overrides the hardcoded width attribute */
    max-width: 100%;
    }


/* Tables */
	
/* Increase the default separation of all table columns */

table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation)
	{
	border-collapse: separate;
	border-spacing: 0;
	}

/* use tabular figures (monospaced) in tables */	
table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation) 
    {
    font-variant-numeric: tabular-nums;
    }   

/* cancel the body's char-level breaking inside data tables: prose wraps at spaces; numbers stay whole. */
table[data-pdf-se-type="Table"] :is(th, td) 
    {
    overflow-wrap: normal;
    }
	
/* an accommodation that can be used to prevent adjacent wide columns from crushing much smaller columns */

th span[data-pdf-se-type-original="MinWidSpan"]
	{ 
	display: inline-block;
	min-width: 7rem;
	}

/* align paragraph cells in table to the left */
table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation) p	
    {
	text-align: left!important;
	}
	
/* right align non-p columns, e.g. numbers */
table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation) td 
    {
    text-align: right; 
     }

/* Center data tables only (leave ARIA presentation tables alone) */
table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation) 
	{
	margin-left: 	auto;
	margin-right: 	auto;
	max-width: 	    100%; /* need to give a value for auto margins */
	margin-top: 	0.75em;
	margin-bottom: 	0.75em;
	}
	
/* Center captions for non-ARIA data tables only */

/* caption AFTER the table (caption below, if somehow present) */
table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation) + div[data-pdf-se-type="Caption"],
/* caption BEFORE the table (caption above): the caption whose next sibling is a data table */
  div[data-pdf-se-type="Caption"]:has(+ table[data-pdf-se-type="Table"]:not(.ARIA-role-presentation))
	{
    text-align:   center;
	}

table[data-pdf-se-type="Table"] th,
table[data-pdf-se-type="Table"] td 
	{ 
	padding: 0; 
	}

table[data-pdf-se-type="Table"] th + th,
table[data-pdf-se-type="Table"] td + td 
	{
	padding-left: 1em;
	}

/* Center all table header cells */

table[data-pdf-se-type="Table"] th 
	{
	text-align: center;
	}

/* Bold math in table header cells */
th math, th math * 
	{
	font-weight: 700 !important ; 
	font-style: normal !important ;   /* prevents italics on symbols */
    /* font-size: 14pt; */ /* match bold text better than 12pt? Not so much... */
	}


/* Keep incidental borders consistent */

table:not(.ARIA-role-presentation),
  table:not(.ARIA-role-presentation) th,
  table:not(.ARIA-role-presentation) td 
    {
    border-color: var(--table-rule);
    }

/* adjust tables using p{..cm} columns */
th div p, td div p
	{
	margin-top: 	0.2em;
	margin-bottom: 	0.2em;
	}

/* --- Booktabs-style horizontal rules --- */

/* Colors for table rules (light mode defaults) */
:root 
	{
	  --table-rule: #8c8c8c;         /* body/bottom rule */
	  --table-rule-strong: #808080;  /* header/top and mid rule */
	}

/* Ensure no vertical borders */
table:not(.ARIA-role-presentation) th,
table:not(.ARIA-role-presentation) td 
	{
	border: none;
	}

/* Top rule above the table header row (toprule) */
table:not(.ARIA-role-presentation) tr:first-child th 
	{
	border-top: 1px solid var(--table-rule-strong);
/*	padding-top: 0.25em;
	padding-bottom: 0.25em; */ /* redundant */
	}

/* Mid rule below header (midrule) */
table:not(.ARIA-role-presentation) th 
	{
	padding-bottom: 0.25em;
	padding-top: 0.25em;
	border-bottom: 1px solid var(--table-rule-strong);
	}

/* Slight increase in separation of non-header rows (readability) */
table:not(.ARIA-role-presentation) tr > td
	{
	padding-top: 0.1em;
	}

/* Bottom rule below last body row (bottomrule) */
table:not(.ARIA-role-presentation) tbody tr:last-child td 
	{
	border-bottom: 1px solid var(--table-rule);
	padding-bottom: 0.25em;
	}

/* Special handling of ARIA (presentation) tables */

/* Keep presentation tables (not data tables) at left margin */
.ARIA-role-presentation[data-pdf-se-type="Table"]
	{
	  padding-left: 0;
	  border-collapse: collapse;
	}

.ARIA-role-presentation[data-pdf-se-type="Table"] td + td,
.ARIA-role-presentation[data-pdf-se-type="Table"] th + th 
	{
    padding-left: 	0.5em;
	padding-right: 	0.5em;
	}

/* Captions */
/* The effectiveness of all this is changed/reduced by loading the caption/subcaption packages */

div[data-pdf-se-type="Caption"]
    {
    text-align: center;
    }

/* Let's keep caption labels on the same line as caption text */
div[data-pdf-se-type="Caption"]  p[data-pdf-se-type="P"] 
	{    
	display: inline;
	font-weight: bold;  /* make all caption text bold; note math-fallback below */
	}
	
/* boldface labels on captions, with space after label */	
div[data-pdf-se-type="Caption"] > span[data-pdf-se-type="Lbl"] 
	{
	font-weight: bold;
	}
	
div[data-pdf-se-type="Caption"]  span[data-pdf-se-type="Lbl"]::after 
	{
	content: "";
	display: inline-block;
	width: 0.5em;
	}

/* Math fallback for math/formula-like children and SVG text */
div[data-pdf-se-type="Caption"] 
:is(
  math,
  .inline,
  span[data-pdf-se-type="Formula"],
  .formula,
  .math,
  .eq,
  svg text
) 
	{
	font-family: 	var(--math-fallback-bold);    
/*	font-family: 	var(--math-fallback-regular); */
	font-style: 	normal;
	line-height: 	inherit;
	}


/* Footnotes */

/* inline footnotes with raised superscript */

div[data-pdf-se-type-original="footnote"]
    { 
    margin-bottom: 0.25em; 
    margin-top:    0.25em;
    }

div[data-pdf-se-type-original="footnote"] > span[data-pdf-se-type-original="footnotelabel"]
	{ 
	font-size: smaller;        
	color: var(--footnote-color);
	margin-right: 0.25em;
	}

 div[data-pdf-se-type-original="footnote"] [data-pdf-se-type="Part"] 
	{
	display: contents;
	}

div[data-pdf-se-type-original="footnote"] [data-pdf-se-type="Part"] > p[data-pdf-se-type="P"] 
	{
    display: 	 	inline;
    font-size: 	 	smaller;
    font-weight: 	normal; 
    color: 			var(--footnote-color);
    --hang:         0em; /* in case footnote is inside a description list */
	}
	
span[data-pdf-se-type-original="footnote"],
    span[data-pdf-se-type-original="footnotelabel"]
    { 
	font-size: smaller;        
	color: var(--footnote-color);
	}


/* Listing code lines (no wrapping) */

code[data-pdf-se-type-original="codeline"]
	{
	font-family: 	var(--ui-mono);
	font-size: 		10pt;
	color: 			var(--code-color);
	}

code[data-pdf-se-type="Code"]	
	{
	font-family: 	var(--ui-mono);
	font-size: 		12pt;
	color: 			var(--code-color);
	}

/* Description lists */

dl.description 
	{
	--hang: 3em;      /* hanging width for dd paragraphs */
	--gap: 0.5em;     /* space between label and body */
	margin: 0;
	padding: 0 0 0 1em;
	}

/* Each LI wrapper: contain float + add spacing between items */
dl.description > div 
	{
	display: flow-root;
	margin-bottom: 1em; /* 1em gap between list items */
	}
dl.description  div:last-child 
	{
	margin-bottom: 0;   /* no extra space after final item */
	}

/* Label floats left; reserve hanging width + gap */
dl.description dt 
	{
	float: left;
	font-weight: 700;
	margin: 0 calc(var(--hang) + var(--gap)) 0 0;
  /* optional: prevent wrapping of label text */
  /* white-space: nowrap; */
	}

/* Definition follows the float */
dl.description dd 
	{ margin: 0; }

/* Ignore PDF wrapper divs */
dl.description > dd > div 
	{ display: contents; }

/* 3em hanging indent for body paragraphs */
dl.description dd p 
	{
	margin: 0;
	padding-left: var(--hang);
	text-indent: calc(var(--hang) * -1);
	}

/* Additional paragraphs: same hanging + 1em vertical gap */
dl.description dd > div + div > p
	{ 
	margin-top: 1em; 
	text-indent: 0;
	}


/* Special layout for nomenclature list, two column */

div[data-pdf-se-type-original="Nomenclature_list"] ul li, 
div[data-pdf-se-type-original="Nomenclature_list"] ul p  
	{
	margin-bottom: 0em;
	}
div[data-pdf-se-type-original="Nomenclature_list"] ul li p {
    margin-bottom: 0.2em !important;
}
	
div[data-pdf-se-type-original="Nomenclature_list"] ul  
	{
	column-count: 2; /* Specifies exactly 2 columns */
	column-gap: 2em; /* Adds space between columns  */
	}

/* Nomenclature entry heading (e.g., "Greek letters") */
ul.list span[data-pdf-se-type-original="Nomenclature_entry_heading"]
	{
	font-style:    italic;
	margin-top:    0.5em;
	margin-bottom: 0.5em; /* some additional space */
	display: inline-block;
	}


/* Other enumerated and itemized lists (References are "list") */

/* Label inline with first line, paragraphs preserved */
:where(ol[data-pdf-se-type-original="enumerate"],
	ul[data-pdf-se-type-original="list"],
    ul[data-pdf-se-type-original="itemize"]) 
      li[data-pdf-se-type="LI"] 
	{
	display: 		flex;      	/* put label and body on the same row 	*/
	align-items: 	flex-start;	/* align label with top of body 		*/
	column-gap: 	0.25em;     /* space between label and text 		*/
	margin-bottom: 	0.5em;		/* vertical separation between items 	*/
	}

/* Label stays in the left column */
:where(ol[data-pdf-se-type-original="enumerate"],
	ul[data-pdf-se-type-original="list"],
    ul[data-pdf-se-type-original="itemize"])
      li[data-pdf-se-type="LI"] > span[data-pdf-se-type="Lbl"] 
	{
	flex: 0 0 auto;  /* no grow/shrink */
	}

/* Body flows in the right column; override inline-block from generator */
:where(ol[data-pdf-se-type-original="enumerate"],
	ul[data-pdf-se-type-original="list"],
    ul[data-pdf-se-type-original="itemize"])
      li[data-pdf-se-type="LI"] > [data-pdf-se-type="LBody"]
	{
	flex: 		1 1 auto;
	display: 	block !important;   /* ensures normal block flow   */
	min-width: 	0;                  /* allow wrapping in flex item */
	}

/* Inner wrappers transparent to layout */
:where(ol[data-pdf-se-type-original="enumerate"],
	ul[data-pdf-se-type-original="list"],
    ul[data-pdf-se-type-original="itemize"])
      li[data-pdf-se-type="LI"] > [data-pdf-se-type="LBody"] > [data-pdf-se-type="Part"] 
	{
	display: contents;
	}

/* Keep paragraphs as blocks so breaks are preserved */
:where(ol[data-pdf-se-type-original="enumerate"],
	ul[data-pdf-se-type-original="list"],
    ul[data-pdf-se-type-original="itemize"])
      li[data-pdf-se-type="LI"] p[data-pdf-se-type="P"] 
	{
	display: 	block;
	margin: 	0 0 0.5em 0;   /* paragraph spacing inside the body */
	}

/* remove any previously added pseudo-space */
:where(ol[data-pdf-se-type-original="enumerate"],
	ul[data-pdf-se-type-original="list"],
    ul[data-pdf-se-type-original="itemize"])
      li[data-pdf-se-type="LI"] > span[data-pdf-se-type="Lbl"]::after	
	{
	content: none;
	}
	
/* Lists with ragged right (target is Reference list, but this affects all ul.list */
ul[data-pdf-se-type-original="list"] li[data-pdf-se-type="LI"]  div[data-pdf-se-type="LBody"] p[data-pdf-se-type-original="text"]
	{
	text-align: left !important ;
	margin-bottom: 0.25em;
	}

	
/* space above figures and tables (asides) */

aside { margin-top: 3em; }

/* Double figure width, but don't exceed 90% of page width */
    
aside[data-pdf-se-type="Aside"] p.center img {
    display: block !important;
    margin:  1em auto !important;
    width:   min(calc(2 * var(--native-w)), 90%) !important;
    height:  auto !important;
}

aside[data-pdf-se-type="Aside"] div[data-pdf-se-type="Caption"] p.justify {
    max-width: 90%;
    margin: 0.5em auto 0;
    text-align: center !important;
}

/* Figure text (target is any subcaption text in the figure) */
 aside[data-pdf-se-type="Aside"] div[data-pdf-se-type-original="text-unit"] > p.justify
 	{
	text-align: center!important;
	}


/* --- Dark mode adjustments --- */

@media (prefers-color-scheme: dark) {
	:root {
	    --table-rule:         #4f4f4f; /* bottom rule — visible on #121212 */
	    --table-rule-strong:  #8a8a8a; /* header rules — brighter */
        --code-color:         #7cb0ff; /* light sky blue — high contrast on #121212 */
        --footnote-color:     #9ec3ff;
        --fg-color:           #e8eaed;
		--bg-color:           #121212;
		--hr-color:           #2b2b2b;
		--link-color:         #82b1ff;  /* light blue, accessible on #121212 */
		--link-visited-color: #b388ff;  /* distinct violet for visited links */
		--link-hover-color:   #bbdefb;  /* even lighter on hover/focus */
		--xref-color:         #8ab4f8;  /* medium-light blue with strong contrast */
	}
}

/* --- Print: layout, breaks, widows/orphans --- */

@media print {
	@page {
		size: 	Letter;    /* or A4 */
		margin: 0.5in;     /* matches ~36pt intent */
	}
	body {
		margin: 0;         /* @page controls it on print */
		max-width: none;
	}
  
	/* Avoid splitting key elements across pages */
	h1, h2, h3, h4,
		[data-pdf-se-type="Figure"],
	    table[data-pdf-se-type="Table"],
	    figcaption,
	    div[data-pdf-se-type="Caption"] 
		{
		break-inside: avoid-page;
		}

	/* Widow & orphan control */
	p, li, dd, blockquote 
	{
		orphans: 	2;
		widows: 	2;
	}
}
