/*
 * Printable Periodic Table pages. Every rule starts with `body.ppt-page`.
 *
 * ruki-child styles `.t33-page-main .entry-content a`, `h1..h6`, `ul/ol/li`,
 * `img` (border-radius 14px), `table`, `td` (display:block at 390px) at
 * (0,2,1)-(0,3,1), which beat a bare class and would render this page's text in
 * the theme's link and heading styles. Rules here reach (0,3,x) or deeper and
 * name the element where the theme styles that element. No `!important`
 * outside the print block at the end, no url() (Autoptimize aggregates this
 * file and relative paths break), no <code>.
 *
 * Roots: every block has `.ppt-r`; blocks after the first are `.ppt-b`; the
 * hero is `.ppt-web` (the shell's lift root, `.ppt-web:first-child`, which only
 * matches if an editor ever puts [ppt_hero] first). `.ppt` is NOT used here: it
 * is the root class of the sheet renderer (lib/table.js), whose CSS is
 * injected by js/ppt-custom.js when the customizer wakes up.
 *
 * The shell block in the middle of this file is generated by
 * _shared/sync-shell.js; the rules after it are this page's overrides.
 */

body.ppt-page {
	--ppt-ink: var(--t33-ink, #1b2233);
	--ppt-soft: var(--t33-ink-soft, #5a6378);
	--ppt-line: #e3e7ef;
	--ppt-line-strong: #c9d1e2;
	--ppt-panel: #f5f8fc;
	--ppt-teal: #0a7e9c;
	--ppt-teal-dark: #086680;
	--ppt-teal-soft: #e7f6fa;
	--ppt-coral: #c8415a;
	--ppt-navy: #26365f;
	--ppt-radius: var(--t33-radius, 14px);
}

body.ppt-page .entry-content .ppt-r {
	box-sizing: border-box;
	max-width: 100%;
	margin-left: 0;
	margin-right: 0;
}

body.ppt-page .entry-content .ppt-r *,
body.ppt-page .entry-content .ppt-r *::before,
body.ppt-page .entry-content .ppt-r *::after {
	box-sizing: border-box;
}

body.ppt-page .entry-content .ppt-r.ppt-b {
	margin-bottom: 2em;
}

body.ppt-page .entry-content .ppt-r [hidden][hidden] {
	display: none;
}

body.ppt-page .entry-content .ppt-r p {
	margin: 0;
	padding: 0;
}

body.ppt-page .entry-content .ppt-r .ppt-sr {
	clip: rect(0 0 0 0);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

body.ppt-page .entry-content .ppt-tblock sup,
body.ppt-page .entry-content .ppt-tblock sub {
	font-size: 0.72em;
	line-height: 0;
}

body.ppt-page .entry-content .ppt-r button:focus-visible,
body.ppt-page .entry-content .ppt-r a:focus-visible,
body.ppt-page .entry-content .ppt-r .ppt-in:focus-visible,
body.ppt-page .entry-content .ppt-r .ppt-scroll:focus-visible,
body.ppt-page .entry-content .ppt-r .ppt-chip input:focus-visible {
	outline: 3px solid var(--t33-cyan, #2bc8e8);
	outline-offset: 2px;
}

/* The hero is a panel. The shell lifts `.ppt-web:first-child` over the hero band at (0,5,1). */
body.ppt-page .entry-content .ppt-r.ppt-hero {
	margin-bottom: 2em;
	padding: 20px;
	background: var(--t33-paper, #fff);
	border: 1px solid var(--ppt-line);
	border-radius: var(--ppt-radius);
	box-shadow: var(--t33-shadow, 0 10px 30px rgba(7, 11, 26, 0.10));
}

body.ppt-page .t33-page-main .entry-content > .ppt-web:first-child {
	border-color: transparent;
}

/* ----------------------------------------------------- controls ---- */

body.ppt-page .entry-content .ppt-r .ppt-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
}

body.ppt-page .entry-content .ppt-r .ppt-bar-l,
body.ppt-page .entry-content .ppt-r .ppt-f-l {
	font-size: 0.76rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-seg {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 2px;
	padding: 3px;
	background: var(--ppt-panel);
	border: 1px solid var(--ppt-line);
	border-radius: 999px;
}

body.ppt-page .entry-content .ppt-r button.ppt-seg-btn {
	appearance: none;
	margin: 0;
	padding: 8px 16px;
	border: 0;
	border-radius: 999px;
	background: transparent;
	box-shadow: none;
	color: var(--ppt-soft);
	font: inherit;
	font-size: 0.92rem;
	font-weight: 700;
	line-height: 1.2;
	text-transform: none;
	letter-spacing: 0;
	cursor: pointer;
}

body.ppt-page .entry-content .ppt-r button.ppt-seg-btn:hover {
	color: var(--ppt-ink);
	background: transparent;
}

body.ppt-page .entry-content .ppt-r button.ppt-seg-btn[aria-pressed="true"] {
	background: var(--ppt-ink);
	color: #fff;
}

body.ppt-page .entry-content .ppt-r .ppt-btn,
body.ppt-page .entry-content .ppt-r .ppt-open {
	display: inline-block;
	margin: 0;
	padding: 9px 16px;
	border-radius: 8px;
	font: inherit;
	font-size: 0.92rem;
	font-weight: 800;
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

body.ppt-page .entry-content .ppt-r .ppt-btn {
	border: 1px solid var(--ppt-teal);
	background: var(--ppt-teal);
	color: #fff;
}

body.ppt-page .entry-content .ppt-r .ppt-btn:hover,
body.ppt-page .entry-content .ppt-r .ppt-btn:visited {
	background: var(--ppt-teal-dark);
	border-color: var(--ppt-teal-dark);
	color: #fff;
}

body.ppt-page .entry-content .ppt-r .ppt-btn-lg {
	padding: 13px 22px;
	border-radius: 10px;
	font-size: 1.02rem;
}

body.ppt-page .entry-content .ppt-r .ppt-btn-ic {
	display: inline-block;
	margin-right: 8px;
	font-size: 1.1em;
	line-height: 1;
}

body.ppt-page .entry-content .ppt-r .ppt-open {
	border: 1px solid var(--ppt-line-strong);
	background: #fff;
	color: var(--ppt-ink);
}

body.ppt-page .entry-content .ppt-r .ppt-open:hover,
body.ppt-page .entry-content .ppt-r .ppt-open:visited {
	background: var(--ppt-panel);
	color: var(--ppt-ink);
}

body.ppt-page .entry-content .ppt-r .ppt-in {
	display: block;
	width: 100%;
	height: 44px;
	margin: 0;
	padding: 8px 12px;
	border: 1px solid var(--ppt-line-strong);
	border-radius: 8px;
	background: #fff;
	color: var(--ppt-ink);
	font: inherit;
	font-size: 1rem;
	line-height: 1.3;
	box-shadow: none;
}

/* ------------------------------------------------------------ hero --- */

body.ppt-page .entry-content .ppt-r .ppt-fig {
	margin: 16px 0 0;
}

body.ppt-page .entry-content .ppt-r .ppt-paper {
	position: relative;
	width: 100%;
	aspect-ratio: var(--ppt-ar, 1600 / 1236);
	overflow: hidden;
	background: #fff;
	border: 1px solid var(--ppt-line);
	border-radius: 6px;
	box-shadow: 0 1px 2px rgba(7, 11, 26, 0.12), 0 14px 34px rgba(7, 11, 26, 0.14);
}

body.ppt-page .entry-content .ppt-r .ppt-paper img {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	border-radius: 0;
	object-fit: contain;
	object-position: center;
}

body.ppt-page .entry-content .ppt-r .ppt-fig figcaption {
	margin: 12px 0 0;
	text-align: center;
	font-size: 0.86rem;
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-hero-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 18px;
}

body.ppt-page .entry-content .ppt-r .ppt-hero-actions .ppt-btn {
	flex: 1 1 220px;
}

/* ------------------------------------------------------ downloads --- */

body.ppt-page .entry-content .ppt-r.ppt-dl {
	padding: 20px;
	background: var(--ppt-panel);
	border: 1px solid var(--ppt-line);
	border-radius: var(--ppt-radius);
}

body.ppt-page .entry-content .ppt-r .ppt-grid {
	display: grid;
	gap: 14px;
	margin-top: 16px;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr));
}

body.ppt-page .entry-content .ppt-r .ppt-card {
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: 14px;
	background: #fff;
	border: 1px solid var(--ppt-line);
	border-radius: 12px;
	box-shadow: 0 1px 2px rgba(7, 11, 26, 0.06);
}

/* The frame has the tallest variant's ratio (Letter), so a Letter/A4 swap moves nothing. */
body.ppt-page .entry-content .ppt-r .ppt-thumb {
	position: relative;
	width: 100%;
	margin: 0 0 12px;
	aspect-ratio: var(--ppt-ar, 480 / 371);
	overflow: hidden;
	background: #fff;
	border-radius: 3px;
	box-shadow: 0 0 0 1px rgba(7, 11, 26, 0.14), 0 5px 12px rgba(7, 11, 26, 0.12);
}

body.ppt-page .entry-content .ppt-r .ppt-thumb.ppt-thumb-p {
	width: 62%;
	margin-left: auto;
	margin-right: auto;
}

body.ppt-page .entry-content .ppt-r .ppt-thumb img {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	border-radius: 0;
	object-fit: contain;
	object-position: top center;
}

body.ppt-page .entry-content .ppt-r .ppt-card-body {
	display: flex;
	flex-direction: column;
	min-width: 0;
	flex: 1 1 auto;
}

body.ppt-page .entry-content .ppt-r h3.ppt-card-title {
	margin: 0 0 4px;
	padding: 0;
	font-size: 1.02rem;
	font-weight: 800;
	line-height: 1.25;
	color: var(--ppt-ink);
}

body.ppt-page .entry-content .ppt-r .ppt-facts {
	margin-bottom: 6px;
	font-size: 0.82rem;
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-blurb {
	font-size: 0.88rem;
	line-height: 1.5;
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-card-foot {
	margin-top: 12px;
}

body.ppt-page .entry-content .ppt-r .ppt-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

body.ppt-page .entry-content .ppt-r .ppt-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 12px;
	margin-top: 10px;
	padding-top: 10px;
	border-top: 1px dashed var(--ppt-line-strong);
	font-size: 0.86rem;
}

body.ppt-page .entry-content .ppt-r .ppt-keyrow .ppt-row-l {
	color: var(--ppt-coral);
}

body.ppt-page .entry-content .ppt-r .ppt-row-l {
	font-weight: 800;
	color: var(--ppt-navy);
}

body.ppt-page .entry-content .ppt-r a.ppt-link {
	font-weight: 700;
	color: var(--ppt-teal);
}

body.ppt-page .entry-content .ppt-r .ppt-row-m {
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-license {
	margin-top: 18px;
	font-size: 0.88rem;
	color: var(--ppt-soft);
}

/* ------------------------------------------------------ customizer --- */

body.ppt-page .entry-content .ppt-r.ppt-cz {
	padding: 18px;
	background: #fff;
	border: 1px solid var(--ppt-line);
	border-radius: var(--ppt-radius);
	box-shadow: var(--t33-shadow, 0 10px 30px rgba(7, 11, 26, 0.10));
}

body.ppt-page .entry-content .ppt-r .ppt-cz-controls {
	display: grid;
	gap: 14px;
	padding: 16px;
	background: var(--ppt-panel);
	border: 1px solid var(--ppt-line);
	border-radius: 12px;
}

body.ppt-page .entry-content .ppt-r .ppt-cz-row {
	display: grid;
	gap: 12px;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
}

body.ppt-page .entry-content .ppt-r .ppt-cz-toggles {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 10px;
}

body.ppt-page .entry-content .ppt-r label.ppt-f {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
	margin: 0;
}

body.ppt-page .entry-content .ppt-r label.ppt-f-title {
	flex: 2 1 260px;
}

body.ppt-page .entry-content .ppt-r fieldset.ppt-fields {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

body.ppt-page .entry-content .ppt-r fieldset.ppt-fields legend {
	float: none;
	width: auto;
	margin: 0 0 6px;
	padding: 0;
}

body.ppt-page .entry-content .ppt-r .ppt-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

body.ppt-page .entry-content .ppt-r label.ppt-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 7px 13px 7px 11px;
	border: 1px solid var(--ppt-line-strong);
	border-radius: 999px;
	background: #fff;
	color: var(--ppt-ink);
	font-size: 0.9rem;
	font-weight: 700;
	line-height: 1.2;
	cursor: pointer;
}

body.ppt-page .entry-content .ppt-r label.ppt-chip input {
	flex: none;
	width: 16px;
	height: 16px;
	margin: 0;
	accent-color: var(--ppt-teal);
}

body.ppt-page .entry-content .ppt-r label.ppt-chip:has(input:checked) {
	border-color: var(--ppt-teal);
	background: var(--ppt-teal-soft);
}

body.ppt-page .entry-content .ppt-r label.ppt-chip:has(input:disabled) {
	cursor: default;
	opacity: 0.8;
}

body.ppt-page .entry-content .ppt-r .ppt-cz-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
}

body.ppt-page .entry-content .ppt-r .ppt-cz-hint {
	font-size: 0.88rem;
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-cz-view {
	margin-top: 16px;
}

/* The box never changes size: Letter is the tallest paper, every other sheet is fitted inside it. */
body.ppt-page .entry-content .ppt-r .ppt-cz-box {
	position: relative;
	width: 100%;
	aspect-ratio: 279.4 / 215.9;
	overflow: hidden;
	background: #e9edf5;
	border: 1px solid var(--ppt-line);
	border-radius: 8px;
}

body.ppt-page .entry-content .ppt-r .ppt-cz-ph {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	border-radius: 0;
	object-fit: contain;
	object-position: center;
}

body.ppt-page .entry-content .ppt-r .ppt-cz-stage {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	overflow: hidden;
}

body.ppt-page .entry-content .ppt-r .ppt-cz-sheet {
	position: absolute;
	top: 0;
	left: 0;
	transform-origin: 0 0;
	background: #fff;
	box-shadow: 0 0 0 1px rgba(7, 11, 26, 0.14), 0 10px 28px rgba(7, 11, 26, 0.18);
}

body.ppt-page .entry-content .ppt-r .ppt-cz-status {
	margin-top: 10px;
	font-size: 0.86rem;
	color: var(--ppt-soft);
}

body.ppt-page .entry-content .ppt-r .ppt-note {
	margin: 0 0 10px;
	font-size: 0.9rem;
	line-height: 1.5;
	color: var(--ppt-soft);
}

/* The print copy of the sheet exists only while printing. */
body.ppt-page .ppt-print-root {
	display: none;
}

/*
 * The sheet must look like the PDF, not like an article. These are the
 * inherited properties the sheet's own CSS (lib/table.js) leaves to the page,
 * pinned to the browser defaults it was designed against, and the theme's
 * normalize.css sup/sub (position:relative, top:-.5em) which the sheet's own
 * vertical-align would apply a second time. tools/browser-check.js renders the
 * same sheet with no theme and diffs every element.
 */
body.ppt-page .ppt-cz-sheet,
body.ppt-page .ppt-print-root {
	font-size: 16px;
	font-style: normal;
	font-weight: 400;
	line-height: normal;
	letter-spacing: normal;
	word-spacing: normal;
	text-align: start;
	text-indent: 0;
	text-transform: none;
	white-space: normal;
}

body.ppt-page .ppt-cz-sheet .ppt sup,
body.ppt-page .ppt-cz-sheet .ppt sub,
body.ppt-page .ppt-print-root .ppt sup,
body.ppt-page .ppt-print-root .ppt sub {
	position: static;
	top: auto;
	bottom: auto;
}

/* Bold inside the sheet is the browser's `bolder`, not the theme's fixed weight. */
body.ppt-page .ppt-cz-sheet .ppt b,
body.ppt-page .ppt-cz-sheet .ppt strong,
body.ppt-page .ppt-print-root .ppt b,
body.ppt-page .ppt-print-root .ppt strong {
	font-weight: bolder;
}

/*
 * The sheet sets no top margin or padding on these; the theme does. The
 * sheet's own bottom margins (`.lg h2`) and `.ttl p` margin-top are left alone:
 * a full `margin: 0` here would outrank them.
 */
body.ppt-page .ppt-cz-sheet .ppt h1,
body.ppt-page .ppt-cz-sheet .ppt h2,
body.ppt-page .ppt-print-root .ppt h1,
body.ppt-page .ppt-print-root .ppt h2 {
	margin-top: 0;
	padding: 0;
}

body.ppt-page .ppt-cz-sheet .ppt h1,
body.ppt-page .ppt-print-root .ppt h1 {
	margin-bottom: 0;
}

/* The legend heading has no font of its own in the sheet: it inherits the sheet's, not the theme's heading font. */
body.ppt-page .ppt-cz-sheet .ppt h2,
body.ppt-page .ppt-print-root .ppt h2 {
	font-family: inherit;
}

body.ppt-page .ppt-cz-sheet .ppt p,
body.ppt-page .ppt-print-root .ppt p {
	margin-bottom: 0;
	padding: 0;
}

/* ---------------------------------------------------------- tables --- */

body.ppt-page .entry-content .ppt-r .ppt-scroll {
	max-width: 100%;
	overflow-x: auto;
	border: 1px solid var(--ppt-line);
	border-radius: 12px;
	background: #fff;
}

body.ppt-page .entry-content .ppt-r table.ppt-table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	font-size: 0.92rem;
	line-height: 1.4;
}

body.ppt-page .entry-content .ppt-r table.ppt-table-c {
	min-width: 520px;
}

body.ppt-page .entry-content .ppt-r table.ppt-table-s {
	min-width: 280px;
}

body.ppt-page .entry-content .ppt-r table.ppt-table caption {
	padding: 10px 12px;
	text-align: left;
	font-size: 0.86rem;
	font-weight: 700;
	color: var(--ppt-soft);
	caption-side: top;
}

/*
 * ruki turns every `.entry-content td` into display:block at max-width 390px
 * (a stacked-table layout). These tables scroll sideways inside .ppt-scroll
 * instead, so the cell keeps its table-cell display.
 */
body.ppt-page .entry-content .ppt-r table.ppt-table td {
	display: table-cell;
}

body.ppt-page .entry-content .ppt-r table.ppt-table th,
body.ppt-page .entry-content .ppt-r table.ppt-table td {
	padding: 8px 12px;
	border: 0;
	border-bottom: 1px solid var(--ppt-line);
	text-align: left;
	vertical-align: top;
	color: var(--ppt-ink);
}

body.ppt-page .entry-content .ppt-r table.ppt-table thead th {
	background: var(--ppt-navy);
	border-bottom: 0;
	color: #fff;
	font-size: 0.74rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	white-space: nowrap;
}

body.ppt-page .entry-content .ppt-r table.ppt-table tbody th {
	font-weight: 700;
}

body.ppt-page .entry-content .ppt-r table.ppt-table-l th,
body.ppt-page .entry-content .ppt-r table.ppt-table-l td {
	padding: 6px 8px;
}

body.ppt-page .entry-content .ppt-r table.ppt-table-l tbody tr:nth-child(even) th,
body.ppt-page .entry-content .ppt-r table.ppt-table-l tbody tr:nth-child(even) td {
	background: var(--ppt-panel);
}

body.ppt-page .entry-content .ppt-r table.ppt-table .ppt-num {
	width: 3.2em;
	color: var(--ppt-soft);
	font-variant-numeric: tabular-nums;
}

body.ppt-page .entry-content .ppt-r table.ppt-table .ppt-sym {
	width: 4.4em;
	font-weight: 800;
}

body.ppt-page .entry-content .ppt-r table.ppt-table thead th.ppt-sym,
body.ppt-page .entry-content .ppt-r table.ppt-table thead th.ppt-num {
	color: #fff;
	font-weight: 800;
}

body.ppt-page .entry-content .ppt-r table.ppt-table .ppt-mass {
	text-align: right;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

body.ppt-page .entry-content .ppt-r table.ppt-table .ppt-chg {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

body.ppt-page .entry-content .ppt-r table.ppt-table-c tbody th {
	min-width: 9em;
}

body.ppt-page .entry-content .ppt-r .ppt-g {
	display: inline-block;
	min-width: 1.9em;
	margin-right: 6px;
	padding: 1px 6px;
	border-radius: 999px;
	background: var(--ppt-teal-soft);
	color: var(--ppt-teal-dark);
	font-weight: 800;
	text-align: center;
}

body.ppt-page .entry-content .ppt-r .ppt-list-grid {
	display: grid;
	gap: 14px;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
}

body.ppt-page .entry-content .ppt-r h3.ppt-tblock-title {
	margin: 0 0 8px;
	padding: 0;
	font-size: 1.1rem;
	font-weight: 800;
	line-height: 1.3;
	color: var(--ppt-ink);
}

body.ppt-page .entry-content .ppt-r.ppt-tblock .ppt-scroll + .ppt-note,
body.ppt-page .entry-content .ppt-r.ppt-tblock .ppt-scroll + p {
	margin-top: 10px;
	margin-bottom: 0;
}

/* ------------------------------------------------------------ phone --- */

@media (max-width: 600px) {

	body.ppt-page .entry-content .ppt-r.ppt-hero,
	body.ppt-page .entry-content .ppt-r.ppt-dl,
	body.ppt-page .entry-content .ppt-r.ppt-cz {
		padding: 14px;
	}

	body.ppt-page .entry-content .ppt-r .ppt-card {
		padding: 12px;
	}

	body.ppt-page .entry-content .ppt-r .ppt-cz-controls {
		padding: 12px;
	}

	body.ppt-page .entry-content .ppt-r .ppt-cz-actions .ppt-btn {
		flex: 1 1 100%;
	}
}

/* >>> t33 tool-page shell v1 (generated - edit _shared/toolpage-shell.css) */

/*
 * Makes the lift the card's own. Without a block formatting context the card's
 * negative margin collapses out through `.entry-content`, `article` and
 * `.t33-page-main` -- none of which has top padding -- and lands on `.wrap`,
 * moving the entire column instead of the one element. Measured on the live
 * page before this line existed: `.wrap` top and card top were both 300px, so
 * the declared -72px was in effect on the wrong element and no gate could see
 * the difference.
 */
body.ppt-page .t33-page-main .entry-content {
	display: flow-root;
}

/*
 * The prose measure. Enumerated by tag rather than written as
 * `> *:not(.ppt-web)`, which is what the word search shipped first: a
 * :not() selector also narrows MEDIAVINE'S INJECTED CONTAINERS to 760px,
 * quietly shrinking every in-content unit on the page. Ad units, the tool and
 * the tool strip are divs and navs, so enumerating prose tags leaves them at
 * full column width.
 *
 * `:is()` takes the specificity of its heaviest argument -- a type selector,
 * (0,0,1) -- so this lands at (0,3,2) and beats ruki-child's (0,3,1).
 */
body.ppt-page .t33-page-main .entry-content > :is(p, h2, h3, h4, h5, h6, ul, ol, dl, blockquote, figure, pre) {
	max-width: 760px;
	margin-left: auto;
	margin-right: auto;
}

/*
 * Room for the card to land in. The theme ships `padding: 170px 0 90px`; the
 * extra bottom padding here is spent by the lift below, so the title keeps the
 * breathing room it has today and the tool does not move down the page.
 */
body.ppt-page .t33-page-hero {
	padding-bottom: 132px;
}

/*
 * The lift. Mirrors `.t33-article-media`, which is what the theme already does
 * with a featured image on every other page of the site.
 *
 * The hero is a sibling of `.wrap`, not an ancestor, so its `overflow: hidden`
 * cannot clip this; and it carries no `z-index`, so `z-index: 5` here paints
 * over it. Both of those are the theme's own assumptions -- `.t33-article-media`
 * relies on exactly the same two facts.
 *
 * The ring in the first shadow is load-bearing, not decoration. The word
 * search board's background is #070b1a, byte-identical to the band's bottom
 * gradient stop (--t33-navy-1), so without a hairline the lifted panel would
 * dissolve into the band instead of sitting on it.
 *
 * `border-radius` is deliberately NOT set: each tool keeps its own (18px for
 * the board, 10px for the drill card), and the word search flattens it to 0
 * when the board goes full-bleed on a phone.
 *
 * `:first-child` is a safety catch, not tidiness. If Journey ever inserts a
 * unit at the very top of `.entry-content`, the tool stops being the first
 * child and the lift drops -- which is the right failure. Without it the tool
 * would keep its -72px and ride up over the ad unit.
 */
body.ppt-page .t33-page-main .entry-content > .ppt-web:first-child {
	position: relative;
	z-index: 5;
	margin-top: -72px;
	box-shadow:
		0 0 0 1px rgba(232, 238, 252, 0.18),
		0 26px 60px rgba(7, 11, 26, 0.45);
}

/*
 * The first paragraph after the tool carries the page. It is still a top-level
 * child of `.entry-content` -- only its type scale changed.
 */
body.ppt-page .t33-page-main .entry-content > .ppt-web + p {
	font-size: 1.18rem;
	line-height: 1.7;
	color: var(--t33-ink-soft, #5a6378);
}

/*
 * Section headings get an accent marker instead of being a bare bold line.
 * `::before` is used rather than a wrapper element precisely because a wrapper
 * would swallow an ad slot.
 */
body.ppt-page .t33-page-main .entry-content > h2 {
	position: relative;
	padding-top: 22px;
	margin-top: 2.4em;
}

body.ppt-page .t33-page-main .entry-content > h2::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 54px;
	height: 4px;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--t33-cyan, #2bc8e8), var(--t33-coral, #f67280));
}

/*
 * FAQ pairs, styled through an adjacent-sibling selector. A `<details>` or a
 * wrapper would read better in isolation and cost an ad slot per question.
 */
body.ppt-page .t33-page-main .entry-content > h3 {
	margin-top: 1.8em;
	font-size: 1.22rem;
}

body.ppt-page .t33-page-main .entry-content > h3 + p {
	border-left: 3px solid rgba(43, 200, 232, 0.35);
	padding-left: 16px;
	color: var(--t33-ink-soft, #5a6378);
}

/*
 * Opt-in callout, applied to a top-level <p> in the content/*.html articles.
 * content-check.js balances tags and never inspects attributes, so adding a
 * class to those files is safe.
 */
body.ppt-page .t33-page-main .entry-content > p.t33-callout {
	background: var(--t33-paper-soft, #fff7f3);
	border-left: 4px solid var(--t33-coral, #f67280);
	border-radius: 0 var(--t33-radius, 14px) var(--t33-radius, 14px) 0;
	padding: 18px 22px;
	font-size: 1.02rem;
}

body.ppt-page .t33-page-main .entry-content > ul > li::marker,
body.ppt-page .t33-page-main .entry-content > ol > li::marker {
	color: var(--t33-cyan, #2bc8e8);
}

/* -------------------------------------------------- more science tools --- */

/*
 * Appended by a `the_content` filter, so it is a top-level child of
 * `.entry-content` like any other -- it ADDS an ad boundary rather than
 * removing one, and it reaches pages that do not exist yet.
 */
body.ppt-page .t33-page-main .entry-content > .t33-toolstrip {
	margin-top: 3em;
	padding-top: 1.6em;
	border-top: 1px solid #e3e7ef;
}

body.ppt-page .entry-content .t33-toolstrip-title {
	margin: 0 0 1em;
	font-size: 0.82rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--t33-ink-soft, #5a6378);
}

body.ppt-page .entry-content .t33-toolstrip-list {
	display: grid;
	gap: 14px;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	margin: 0;
	padding: 0;
	list-style: none;
}

body.ppt-page .entry-content .t33-toolstrip-list li {
	margin: 0;
}

body.ppt-page .entry-content .t33-toolstrip-card {
	display: block;
	height: 100%;
	padding: 16px 18px;
	background: var(--t33-paper, #fff);
	border: 1px solid #e3e7ef;
	border-radius: var(--t33-radius, 14px);
	box-shadow: var(--t33-shadow, 0 10px 30px rgba(7, 11, 26, 0.10));
	color: var(--t33-ink, #1b2233);
	text-decoration: none;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}

body.ppt-page .entry-content .t33-toolstrip-card:hover {
	color: var(--t33-ink, #1b2233);
	transform: translateY(-2px);
	box-shadow: var(--t33-shadow-lift, 0 18px 44px rgba(7, 11, 26, 0.16));
}

body.ppt-page .entry-content .t33-toolstrip-name {
	display: block;
	font-weight: 800;
	font-size: 1.02rem;
	margin-bottom: 4px;
}

body.ppt-page .entry-content .t33-toolstrip-what {
	display: block;
	font-size: 0.92rem;
	line-height: 1.5;
	color: var(--t33-ink-soft, #5a6378);
}

/* ------------------------------------------------------------- phone ---- */

/* 600px is the theme's own hero breakpoint, not a new one. */
@media (max-width: 600px) {

	/*
	 * The phone gutter, reclaimed. The theme gutters this column twice -- the
	 * parent theme's bare `.entry-content { padding: 0 30px }` plus
	 * `.t33-page-main`'s own 18px -- so on a 390px phone the tool had 314px to
	 * work with and lost 76px, a fifth of the screen, to empty margin. Measured,
	 * not guessed.
	 *
	 * 12px rather than 0: the prose inside this column still needs an edge, and
	 * every tool card carries its own padding on top of this. Ad containers are
	 * children of `.entry-content` too, so they get the width back as well.
	 */
	body.ppt-page .t33-page-main {
		padding-left: 8px;
		padding-right: 8px;
	}

	body.ppt-page .t33-page-main .entry-content {
		padding-left: 12px;
		padding-right: 12px;
	}

	body.ppt-page .t33-page-hero {
		padding-bottom: 88px;
	}

	body.ppt-page .t33-page-main .entry-content > .ppt-web:first-child {
		margin-top: -44px;
	}

	body.ppt-page .t33-page-main .entry-content > .ppt-web + p {
		font-size: 1.1rem;
	}
}

@media (prefers-reduced-motion: reduce) {

	body.ppt-page .entry-content .t33-toolstrip-card {
		transition: none;
	}

	body.ppt-page .entry-content .t33-toolstrip-card:hover {
		transform: none;
	}
}

/* <<< t33 tool-page shell */

/* ------------------------------------------- after the shell: overrides --- */

/*
 * The page opens with a paragraph, not a tool panel, so nothing is lifted over
 * the hero band and the shell's 132px of padding for the lift would be empty
 * navy. Same specificity as the shell rule, later in the file.
 */
body.ppt-page .t33-page-hero {
	padding-bottom: 64px;
}

@media (max-width: 600px) {

	body.ppt-page .t33-page-hero {
		padding-bottom: 44px;
	}
}

/* -------------------------------------------------------- print block --- */

/*
 * "Print / Save as PDF" in the customizer injects a copy of the sheet into
 * `.ppt-print-root` (a direct child of <body>), adds `ppt-printing` to <body>
 * and calls window.print(). Everything else on the page is hidden. The
 * !important flags are limited to this block: they have to beat ad containers
 * and inline styles that third-party scripts add to <body>'s children, and a
 * shell rule that lifts the first tool block at (0,5,1) is inside .entry-content,
 * which is hidden wholesale, so it needs no reset of its own.
 */
@media print {

	body.ppt-page.ppt-printing {
		margin: 0 !important;
		padding: 0 !important;
		background: #fff !important;
	}

	body.ppt-page.ppt-printing > :not(.ppt-print-root) {
		display: none !important;
	}

	body.ppt-page.ppt-printing .t33-page-hero {
		display: none !important;
	}

	body.ppt-page.ppt-printing .ppt-print-root {
		display: block;
		margin: 0;
		padding: 0;
		overflow: hidden;
		break-after: avoid;
		page-break-after: avoid;
	}
}

/*
 * Mediavine Grow inline subscribe widgets. The single-post body class (needed
 * for in-content ad units) makes grow-for-wp insert them; each shifts the page
 * by about 0.09 as it renders (phone CLS 0.27 on the charges page). They earn
 * nothing, and the other 33science tools leave Grow out. Ad units are untouched.
 */
body.ppt-page [id^="grow-me-inline-subscribe"] {
	display: none;
}
