* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--tnb-scroll-offset,100px); }
body { margin:0; background:var(--tn-base); color:var(--tn-text); }
.wp-site-blocks { padding-top:0; padding-bottom:0; }
.wp-site-blocks > * { margin-block-start:0; }
a { text-underline-offset:3px; }
img { max-width:100%; height:auto; }
button,input,textarea,select { font:inherit; }
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible { outline:2px solid var(--tn-accent); outline-offset:4px; }
[hidden] { display:none !important; }
.screen-reader-text:focus { background:var(--tn-paper); color:var(--tn-text); z-index:100000; }
.tnb-header { background:color-mix(in srgb,var(--tn-paper) 96%,transparent); border-bottom:1px solid var(--tn-border); }
header.wp-block-template-part { position:sticky; top:0; z-index:30; }
.admin-bar header.wp-block-template-part { top:32px; }
.tnb-header-inner,.tnb-footer-inner { width:min(calc(100% - var(--tn-gutter)*2),1400px); margin-inline:auto; }
.tnb-header-inner { min-height:72px; gap:38px; }
.tnb-brand { display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--tn-text); font-family:var(--wp--preset--font-family--serif); font-size:22px; font-weight:700; letter-spacing:-.035em; white-space:nowrap; }
.tnb-brand img { width:36px; height:36px; border-radius:8px; }
.tnb-header-controls { gap:22px; }
.tnb-header .wp-block-navigation { color:var(--tn-muted); }
.tnb-header .wp-block-navigation__container { gap:4px; }
.tnb-header .wp-block-navigation .has-child > .wp-block-navigation__submenu-container { background:var(--tn-paper); border:1px solid var(--tn-border); border-radius:6px; color:var(--tn-text); padding:8px; min-width:210px; box-shadow:var(--shadow-card-hover); }
.tnb-theme-toggle { width:44px; height:44px; flex-shrink:0; border:1px solid var(--tn-border); border-radius:7px; background:var(--tn-paper); color:var(--tn-text); cursor:pointer; font-size:21px; }
.tnb-theme-toggle:hover { background:var(--tn-soft); }
.tnb-main { width:min(calc(100% - var(--tn-gutter)*2),1400px); margin-inline:auto; min-height:70vh; padding:40px 0 72px; }
.tnb-blog-intro { padding:28px 0 42px; max-width:780px; }
.tnb-blog-intro h1 { margin:14px 0 22px; }
.tnb-blog-intro h1 em { color:var(--tn-accent); font-weight:400; }
.tnb-eyebrow { font-family:var(--wp--preset--font-family--sans); font-size:12px; font-weight:650; letter-spacing:.1em; text-transform:uppercase; color:var(--tn-accent); line-height:1.7; }
.tnb-eyebrow a { text-decoration:none; }
.tnb-intro-copy { color:var(--tn-muted); font-size:18px; max-width:590px; line-height:1.65; }
.tnb-browse { padding-block:22px; margin-bottom:28px; border-block:1px solid var(--tn-border); gap:24px; }
.tnb-category-nav ul { list-style:none; display:flex; gap:8px; flex-wrap:wrap; padding:0; margin:0; }
.tnb-category-nav a { display:inline-flex; padding:8px 14px; min-height:44px; align-items:center; border:1px solid transparent; border-radius:8px; text-decoration:none; font-size:13px; color:var(--tn-muted); }
.tnb-category-nav a:hover { background:var(--tn-paper); color:var(--tn-accent); }
.tnb-category-nav a[aria-current] { background:var(--tn-soft); color:var(--tn-accent); border-color:var(--accent-border); }
.tnb-browse .wp-block-search { flex:0 1 280px; }
.wp-block-search__inside-wrapper { padding:0; border:1px solid var(--tn-border); border-radius:8px; background:var(--tn-paper); overflow:visible; }
.wp-block-search__input { min-width:0; padding:10px 12px; background:transparent; color:var(--tn-text); border:0; border-radius:8px; font-size:14px; }
.wp-block-search__button { margin:0; border-radius:0 7px 7px 0; }
.wp-block-search__button svg { min-width:24px; min-height:24px; }
.tnb-query .wp-block-post-template { gap:24px; }
.tnb-query .wp-block-post { min-width:0; }
.tnb-card { height:100%; background:var(--card); border:1px solid var(--tn-border); border-radius:10px; overflow:hidden; box-shadow:var(--shadow-card); transition:box-shadow .15s,border-color .15s; }
.tnb-card:hover { box-shadow:var(--shadow-card-hover); border-color:var(--accent-border); }
.tnb-card > .wp-block-post-featured-image { margin:0; }
.tnb-card .wp-block-post-featured-image a { display:block; }
.tnb-card .wp-block-post-featured-image img { display:block; width:100%; object-fit:cover; }
.tnb-card-body { padding:24px; }
.tnb-card-body > * { margin-top:0; margin-bottom:14px; }
.tnb-card-body > :last-child { margin-bottom:0; }
.tnb-card .wp-block-post-title { font-size:25px; line-height:1.3; }
.tnb-card .wp-block-post-title a { color:var(--tn-text); text-decoration:none; }
.tnb-card .wp-block-post-title a:hover { color:var(--tn-accent); }
.tnb-card .wp-block-post-excerpt { font-size:14px; line-height:1.75; }
.tnb-card .wp-block-post-excerpt__excerpt { margin:0; }
.tnb-meta { gap:8px 18px; color:var(--tn-muted); font-size:12px; line-height:1.6; }
.tnb-meta > * { margin:0; }
.wp-block-query-pagination { margin-top:40px; gap:12px; font-size:14px; }
.wp-block-query-pagination-numbers { display:flex; gap:8px; flex-wrap:wrap; }
.page-numbers,.wp-block-query-pagination-previous,.wp-block-query-pagination-next { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:8px 12px; border:1px solid var(--tn-border); border-radius:8px; text-decoration:none; }
.page-numbers.current { background:var(--tn-soft); color:var(--tn-accent); border-color:var(--accent-border); }
.tnb-breadcrumbs { font-size:12px; color:var(--tn-muted); margin-bottom:36px; }
.tnb-breadcrumbs ol { display:flex; flex-wrap:wrap; gap:6px 10px; padding:0; margin:0; list-style:none; }
.tnb-breadcrumbs li { display:flex; gap:10px; overflow-wrap:anywhere; }
.tnb-breadcrumbs li:not(:last-child)::after { content:'›'; color:var(--tn-muted); }
.tnb-breadcrumbs a { color:inherit; text-decoration:none; }
.tnb-breadcrumbs a:hover { text-decoration:underline; }
.tnb-single { padding-top:8px; }
.tnb-single > .wp-block-post-title { margin-top:16px; }
.tnb-single-meta { padding-bottom:18px; margin-top:22px; }
.tnb-single > .wp-block-post-featured-image { margin-block:32px 40px; }
.tnb-single > .wp-block-post-featured-image img { border-radius:10px; }
/* Post content spans the existing 1400px site canvas; native constrained layout
   keeps normal children at contentSize and explicit wide children at wideSize. */
/* WordPress 6.6 does not render Post Content padding attributes. Keep this
   template boundary explicit as well as using the native template settings. */
.tnb-single > .tnb-article-content { width:100%; margin-inline:0; padding-inline:0; }
.tnb-single > .tnb-article-content > .alignfull { margin-inline:0; }
.tnb-article-content { overflow-wrap:anywhere; }
/* Intrinsic media stays inside its chosen block, including narrow nested groups. */
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-video video,.wp-block-embed iframe) { max-width:100%; }
:where(.tnb-article-content,.editor-styles-wrapper) .wp-block-video video { height:auto; }
/* Only the native paragraph toggle enables the initial. Flow-root contains short
   paragraphs' floats without changing their text, punctuation or saved markup. */
:where(.tnb-article-content,.editor-styles-wrapper) p.has-drop-cap { display:flow-root; }
:where(.tnb-article-content,.editor-styles-wrapper) p.has-drop-cap:not(:focus)::first-letter {
 float:left; font-family:Georgia,'Times New Roman',serif; font-size:3.65em;
 font-weight:400; font-style:normal; line-height:.85; letter-spacing:0;
 margin:.08em .14em 0 0; padding:0; color:var(--tn-accent);
}
:where(.tnb-article-content,.editor-styles-wrapper) p.has-drop-cap:not(:focus)::after { padding:0; }
.tnb-article-content h2,.tnb-article-content h3 { scroll-margin-top:110px; margin-top:2.2em; margin-bottom:.7em; }
.tnb-article-content h2 { font-size:32px; }
.tnb-article-content h3 { font-size:25px; }
.tnb-article-content :where(p) { line-height:1.85; }
.wp-block-image img,.wp-block-gallery img { border-radius:6px; }
:where(figcaption,.wp-element-caption) { color:var(--tn-muted); font-size:13px; }
.wp-block-code,pre.wp-block-preformatted { overflow:auto; white-space:pre; border:1px solid var(--tn-border); border-radius:8px; padding:22px; background:var(--tn-paper); color:var(--tn-text); }
.wp-block-code code { display:block; white-space:inherit; overflow-wrap:normal; }
:not(pre) > code { padding:.15em .35em; background:var(--tn-soft); border-radius:3px; font-size:.9em; }
/* Native tables retain their semantics, colors, alignment and editing controls. */
.wp-block-table { overflow-x:auto; border:1px solid var(--tn-border); border-radius:10px; padding:4px; background:var(--tn-paper); }
.wp-block-table table { width:100%; min-width:var(--tnb-table-min-width,auto); border-collapse:separate; border-spacing:0; font-size:.9375rem; line-height:1.65; }
.wp-block-table table :is(th,td) { border:0; border-bottom:1px solid var(--tn-border); padding:14px 18px; vertical-align:top; overflow-wrap:anywhere; }
.wp-block-table table th { font-weight:650; }
.wp-block-table table :where(th:not([class*=has-text-align])) { text-align:start; }
.wp-block-table table thead { border:0; }
.wp-block-table table tfoot { border:0; font-size:.875rem; }
.wp-block-table table > :last-child > tr:last-child > :is(th,td) { border-bottom:0; }
:where(.wp-block-table:not(.has-background):not(:has(table.has-background))) :where(thead,tfoot) { background:color-mix(in srgb,var(--tn-paper) 55%,var(--tn-soft)); }
.wp-block-table.is-style-stripes { border-bottom:1px solid var(--tn-border); }
.wp-block-table.is-style-stripes:not(.has-background):not(:has(table.has-background)) tbody tr:nth-child(odd) { background:var(--tn-base); }
.wp-block-table.is-style-stripes:is(.has-background,:has(table.has-background)) tbody tr:nth-child(odd) { background:color-mix(in srgb,currentColor 5%,transparent); }
@media(hover:hover) {
 .wp-block-table:not(.has-background):not(:has(table.has-background)) tbody tr:hover { background:var(--tn-soft); }
}
.wp-block-table figcaption { padding:12px 10px 6px; margin:0; overflow-wrap:anywhere; }
.wp-block-table :where(a):focus-visible { outline-offset:2px; }
.wp-block-table :where(ul,ol) { padding-inline-start:1.3em; margin-block:.3em; }
.wp-block-table :where(code) { white-space:normal; }
.wp-block-button__link,.wp-block-search__button { min-height:44px; background:var(--button-primary-bg); color:var(--button-primary-text); border:1px solid var(--button-primary-bg); font-weight:650; transition:background .15s; }
.wp-block-button__link:hover,.wp-block-search__button:hover { background:var(--button-primary-hover); }
.wp-block-button.is-style-outline > .wp-block-button__link { color:var(--tn-accent); background:var(--button-secondary-bg); border-color:var(--accent-border); }
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background:var(--tn-soft); }
.wp-block-embed iframe { max-width:100%; }
.tnb-tags { margin-top:40px; font-size:13px; }
.tnb-author-box { margin-block:36px; padding:24px; border-block:1px solid var(--tn-border); }
.wp-block-post-author__avatar img { border-radius:50%; }
.wp-block-post-author__name { font-weight:650; }
.wp-block-post-author__bio { font-size:14px; color:var(--tn-muted); }
.tnb-post-navigation { font-size:14px; padding-block:12px 30px; gap:24px; }
.tnb-related { border-top:1px solid var(--tn-border); padding-top:32px; margin-top:40px; }
.tnb-related > h2 { font-size:32px; margin-top:0; }
.tnb-related-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; padding:0; list-style:none; }
.tnb-related .tnb-card { padding:24px; }
.tnb-related h3 { font-size:24px; margin:0 0 16px; }
.tnb-related h3 a { color:var(--tn-text); text-decoration:none; }
.tnb-related p { font-size:14px; color:var(--tn-muted); }
.tnb-card-meta { font-size:12px; color:var(--tn-muted); }
.tnb-archive-intro { padding-bottom:24px; }
.tnb-archive-intro h1 { font-size:48px; margin-top:0; }
.tnb-archive-intro .wp-block-term-description { max-width:740px; color:var(--tn-muted); }
.tnb-archive-intro + .tnb-category-nav { margin-bottom:32px; }
.tnb-author-heading { margin-bottom:40px; max-width:740px; }
.tnb-not-found { padding-block:60px; }
.tnb-not-found .wp-block-search { margin-top:32px; }
.tnb-footer { background:var(--closing-floor); color:var(--footer-text); border-top:1px solid var(--footer-border); }
.tnb-footer-inner { padding-block:20px; gap:15px; font-size:11px; }
.tnb-footer-inner p { margin:0; }
.tnb-footer-links { gap:8px 22px; }
.tnb-footer a { color:inherit; text-decoration:none; display:inline-flex; min-height:32px; align-items:center; }
.tnb-footer a:hover { text-decoration:underline; }
.tnb-footer a:focus-visible { outline-color:var(--footer-focus); }
@media (max-width:1179px) {
 .tnb-header-inner { min-height:66px; }
 .tnb-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display:none !important; }
 .tnb-header .wp-block-navigation__responsive-container-open { display:flex !important; min-height:44px; min-width:44px; justify-content:center; align-items:center; border:1px solid var(--tn-border); border-radius:7px; }
 .tnb-header .wp-block-navigation__responsive-container.is-menu-open { background:var(--tn-paper); color:var(--tn-text); padding:32px; }
 .tnb-header .wp-block-navigation__responsive-container-close { min-height:44px; min-width:44px; }
 .tnb-header .is-menu-open .wp-block-navigation__submenu-container { border:0; box-shadow:none; padding-left:18px; }
 .tnb-query .wp-block-post-template { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:782px) { .admin-bar header.wp-block-template-part { top:46px; } }
@media (max-width:600px) {
 .admin-bar header.wp-block-template-part { top:0; }
 .tnb-brand { font-size:20px; gap:10px; }
 .tnb-brand img { width:32px; height:32px; }
 .tnb-header-inner { gap:12px; }
 .tnb-header-controls { gap:8px; }
 .tnb-main { padding-top:28px; padding-bottom:44px; }
 .tnb-blog-intro { padding-top:12px; padding-bottom:24px; }
 .tnb-intro-copy { font-size:16px; }
 .tnb-browse { align-items:stretch; }
 .tnb-browse .wp-block-search { flex-basis:100%; width:100%; }
 .tnb-query .wp-block-post-template,.tnb-related-grid { grid-template-columns:minmax(0,1fr); }
 .tnb-card-body { padding:22px; }
 .tnb-article-content { font-size:16px; }
 .tnb-article-content h2 { font-size:28px; }
 .tnb-article-content h3 { font-size:23px; }
 .tnb-author-box { padding:20px 0; }
 .tnb-footer-inner { flex-direction:column; align-items:flex-start; }
 .tnb-footer-links { gap:4px 18px; }
 .tnb-breadcrumbs { margin-bottom:24px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none !important; animation:none !important; } }
@media (forced-colors:active) { .tnb-card,.tnb-theme-toggle,.wp-block-button__link,.tnb-toc,.tnb-category-nav a[aria-current] { border:1px solid CanvasText; } }
@media print { header.wp-block-template-part,footer.wp-block-template-part,.tnb-toc,.tnb-related,.tnb-post-navigation { display:none; } :root { --tn-base:#fff; --tn-text:#000; --tn-muted:#333; --tn-paper:#fff; --tn-accent:#000; } .tnb-main { width:100%; padding:0; } a { text-decoration:underline; } }
/* Navigation remains usable when scripts are unavailable. */
html:not([data-theme]) .tnb-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display:block !important; }
html:not([data-theme]) .tnb-header .wp-block-navigation__responsive-container-open { display:none !important; }
html:not([data-theme]) .tnb-header .wp-block-navigation__submenu-container { visibility:visible; opacity:1; width:auto; height:auto; overflow:visible; position:static; padding:8px 14px; }
@media(max-width:1179px) {
 html:not([data-theme]) .tnb-header-inner { flex-wrap:wrap; padding-block:14px; }
 html:not([data-theme]) .tnb-header-controls { width:100%; }
 html:not([data-theme]) .tnb-header .wp-block-navigation__container { align-items:flex-start; flex-wrap:wrap; }
}
/* Core supplies explicit white/black modal defaults; preserve the site's palette. */
.tnb-header .wp-block-navigation .wp-block-navigation__responsive-container.has-modal-open.is-menu-open { background:var(--tn-paper); color:var(--tn-text); }
.tnb-header .is-menu-open .wp-block-navigation__responsive-container-content { align-items:stretch; }
.tnb-header .is-menu-open .wp-block-navigation__container { --navigation-layout-justification-setting:flex-start; --navigation-layout-align:flex-start; align-items:flex-start; text-align:start; }
/* Editorial homepage: one native result is featured, and pagination keeps its original slots. */
.tnb-editorial-posts.tnb-has-feature > .tnb-featured-post { grid-column:1 / -1; }
.tnb-featured-post .tnb-card { height:auto; display:grid; grid-template-columns:minmax(0,1.08fr) minmax(0,1fr); align-items:stretch; }
.tnb-featured-post .tnb-card > .wp-block-post-featured-image { position:relative; width:100%; height:auto; min-height:340px; background:var(--tn-base); }
/* The illustration fills the row determined by normal-flow text. Only the
   illustration is positioned; title, excerpt, metadata and CTA determine height. */
.tnb-featured-post .wp-block-post-featured-image > :is(a,img,.tnb-theme-image) { position:absolute; inset:0; width:100%; }
.tnb-featured-post .wp-block-post-featured-image :where(a,img,.tnb-theme-image,picture) { height:100%; }
.tnb-featured-post .wp-block-post-featured-image img { object-fit:contain; padding:16px; box-sizing:border-box; }
.tnb-featured-post .tnb-card-body { min-width:0; padding:clamp(26px,3vw,48px); display:flex; flex-direction:column; justify-content:center; align-items:flex-start; }
.tnb-featured-post .tnb-card-body > * { flex-shrink:0; max-width:100%; overflow-wrap:anywhere; }
.tnb-featured-post .wp-block-post-title { font-size:clamp(30px,3.2vw,44px) !important; line-height:1.18; margin-block:8px 20px; }
.tnb-featured-post .wp-block-post-excerpt { font-size:16px; max-width:52ch; }
.tnb-featured-post:not(.has-post-thumbnail) .tnb-card,.tnb-featured-post .tnb-card:not(:has(.wp-block-post-featured-image)) { grid-template-columns:1fr; }
.tnb-featured-post:not(.has-post-thumbnail) .tnb-card-body { max-width:900px; }
.tnb-read-article { display:inline-flex; min-height:44px; align-items:center; gap:10px; font-size:14px; font-weight:650; margin-top:18px; }
.tnb-read-article::after { content:'→'; }
.tnb-theme-image { display:block; width:100%; aspect-ratio:var(--tnb-image-ratio); }
.tnb-theme-image picture,.tnb-theme-image picture > img { display:block; width:100%; height:100%; object-fit:cover; }
/* The contents surface derives from the same paper/accent palette in both modes. */
.tnb-toc { --tnb-toc-surface:color-mix(in srgb,var(--tn-paper) 74%,var(--tn-soft)); background:var(--tnb-toc-surface); border:1px solid var(--tn-border); border-radius:10px; padding:24px 28px; margin-block:30px; font-size:14px; }
.tnb-toc summary { width:fit-content; min-height:24px; color:var(--tn-muted); font-size:11px; font-weight:650; letter-spacing:.13em; cursor:pointer; }
.tnb-toc summary::marker { color:var(--tn-accent); }
.tnb-toc ol { list-style:none; padding:0; margin:18px 0 0 5px; }
.tnb-toc li { position:relative; padding:0 0 14px 22px; }
.tnb-toc li:last-child { padding-bottom:0; }
/* Each segment joins the center of this marker to the next sibling marker.
   The last (and only) item has no segment; nested lists form their own rails. */
.tnb-toc li:not(:last-child)::after { content:''; position:absolute; inset-inline-start:0; top:calc(.6em + 4px); bottom:calc(-.6em - 4px); border-inline-start:1px solid var(--tn-border); }
.tnb-toc li.tnb-toc-minor:not(:last-child)::after { top:calc(.7em + 3px); bottom:calc(-.7em - 3px); }
.tnb-toc li::before { content:''; position:absolute; z-index:1; inset-inline-start:-4px; top:.6em; width:7px; height:7px; border:1px solid var(--tn-muted); border-radius:50%; background:var(--tnb-toc-surface); }
.tnb-toc li.tnb-toc-minor::before { width:5px; height:5px; inset-inline-start:-3px; top:.7em; }
.tnb-toc li ol { margin:12px 0 0; }
.tnb-toc a { display:inline-block; max-width:100%; color:var(--tn-muted); line-height:1.7; text-decoration:none; overflow-wrap:anywhere; border-radius:3px; }
.tnb-toc .tnb-toc-major > a { color:var(--tn-text); font-weight:600; }
.tnb-toc .tnb-toc-minor > a { font-size:13px; }
.tnb-toc a:hover,.tnb-toc a[aria-current=location] { color:var(--tn-accent); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; }
.tnb-toc li:has(> a[aria-current=location])::before { background:var(--tn-accent); border-color:var(--tn-accent); }
.tnb-article-content :is(h2,h3) { scroll-margin-top:0; }
/* Portraits are local Media Library attachments, never Gravatar. */
.tnb-author-profile { display:grid; grid-template-columns:96px minmax(0,1fr); gap:24px; padding-block:30px; margin-block:40px; border-block:1px solid var(--tn-border); }
.tnb-author-profile .tnb-author-photo,.tnb-author-initials { width:96px; height:96px; border-radius:50%; object-fit:cover; }
.tnb-author-initials { display:grid; place-items:center; background:var(--tn-soft); color:var(--tn-accent); font-family:var(--wp--preset--font-family--serif); font-size:30px; text-transform:uppercase; }
.tnb-author-info > p { margin:0 0 10px; }
.tnb-author-info > :last-child { margin-bottom:0; }
.tnb-author-info .tnb-eyebrow { font-size:10px; color:var(--tn-muted); }
.tnb-author-name { font-family:var(--wp--preset--font-family--serif); font-size:26px; line-height:1.3; }
.tnb-author-name a { color:var(--tn-text); text-decoration:none; }
.tnb-author-bio { color:var(--tn-muted); font-size:14px; }
.tnb-author-links { display:flex; flex-wrap:wrap; gap:8px 22px; font-size:13px; }
.tnb-author-links a { min-height:32px; display:inline-flex; align-items:center; }
/* Semantic ol/li tutorial content; numbering needs no JavaScript. */
ol.tnb-tutorial { list-style:none; counter-reset:tnb-step; padding:0; margin-block:32px; }
.tnb-tutorial > .tnb-tutorial-step { counter-increment:tnb-step; position:relative; padding:0 0 32px 60px; margin:0; min-width:0; }
.tnb-tutorial-step::before { content:counter(tnb-step); position:absolute; inset-inline-start:0; top:0; display:grid; place-items:center; width:36px; height:36px; border:1px solid var(--accent-border); border-radius:50%; background:var(--tn-paper); color:var(--tn-accent); font:650 15px/1 var(--wp--preset--font-family--sans); }
.tnb-tutorial-step:not(:last-child)::after { content:''; position:absolute; inset-inline-start:17px; top:40px; bottom:4px; border-inline-start:1px solid var(--tn-border); }
.tnb-step-body { min-width:0; overflow-wrap:anywhere; }
.tnb-step-body > :first-child { margin-top:0 !important; }
.tnb-step-body > :last-child { margin-bottom:0; }
.tnb-step-body > .wp-block-heading { padding-top:2px; font-size:26px; }
.tnb-step-body > * + * { margin-top:18px; }
.tnb-step-body .wp-block-image { margin-inline:0; }
.tnb-step-body .wp-block-code { max-width:100%; }
.wp-block-group.is-style-tnb-callout { padding:16px 20px; border-inline-start:3px solid var(--tn-accent); background:var(--tn-paper); }
.is-style-tnb-callout > :first-child { margin-top:0; }
.is-style-tnb-callout > :last-child { margin-bottom:0; }
@media(max-width:780px) {
 .tnb-featured-post .tnb-card { grid-template-columns:1fr; }
 .tnb-featured-post .tnb-card > .wp-block-post-featured-image { min-height:0; aspect-ratio:16 / 10; }
 .tnb-featured-post .tnb-card-body { padding:26px; }
}
@media(max-width:600px) {
 .tnb-author-profile { grid-template-columns:64px minmax(0,1fr); gap:18px; }
 .tnb-author-profile .tnb-author-photo,.tnb-author-initials { width:64px; height:64px; }
 .tnb-author-name { font-size:24px; }
 .tnb-tutorial > .tnb-tutorial-step { padding-inline-start:48px; padding-bottom:28px; }
 .tnb-step-body > .wp-block-heading { font-size:23px; }
 .tnb-toc { margin-block:24px; padding:20px; }
}
@media(forced-colors:active) { .tnb-toc li::before,.tnb-tutorial-step::before { border-color:CanvasText; } }
.tnb-article-content :is(h2,h3) { position:relative; }
.tnb-article-content .tnb-legacy-anchor { position:absolute; inset-block-start:0; inset-inline-start:0; width:0; height:0; padding:0; margin:0; border:0; overflow:hidden; }

/* Presentation-neutral wrappers keep native Image/Gallery sizing and links. */
.tnb-content-image,.tnb-content-image > picture { display:contents; }

.tnb-content-image img { object-fit:contain; }

/* The existing palette slug "text" generates .has-text-color, which is also
   Core's generic custom-color flag. Restore the author's table color locally. */
.wp-block-table table.has-text-color { color:var(--tnb-table-text,var(--tn-text)) !important; }

.wp-block-table table.has-background :where(code) { color:inherit; background:transparent; border:1px solid color-mix(in srgb,currentColor 22%,transparent); }

/* Editorial heroes retain their primary asset's natural ratio. Bound tall media
   by the viewport without cropping or enlarging small sources. */
.tnb-single > .tnb-hero-image { width:100%; max-width:min(1120px,var(--tnb-media-width,1120px),calc(80svh * var(--tnb-media-ratio,2))); margin-inline:auto; border-radius:10px; background:var(--tn-paper); outline:1px solid var(--tn-border); }
.tnb-single > .tnb-hero-image img { display:block; width:100%; height:auto; object-fit:contain; }
.tnb-single > .tnb-hero-image .tnb-theme-image img { height:100%; }
/* Low specificity leaves native author colors, spacing and type controls intact. */
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote) { margin-inline:0; overflow-wrap:anywhere; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote p) { font-size:inherit; line-height:inherit; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote > :first-child) { margin-top:0; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote > :last-child) { margin-bottom:0; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote cite,.wp-block-pullquote cite) { display:block; margin-top:1rem; font-family:var(--wp--preset--font-family--sans); font-size:.8125rem; line-height:1.6; font-style:normal; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote:not(.has-text-color) cite,.wp-block-pullquote:not(.has-text-color) cite) { color:var(--tn-muted); }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-pullquote) { overflow-wrap:anywhere; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-pullquote blockquote) { border:0; margin:0; padding:0; font:inherit; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-pullquote p) { font:inherit; margin-block:0 1rem; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-pullquote:not(.has-text-color) p) { color:var(--tn-accent); }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-list) { padding-inline-start:1.6em; line-height:1.85; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-list > li + li) { margin-top:.45em; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-list .wp-block-list) { margin-block:.5em; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-list > li)::marker { color:currentColor; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-image,.wp-block-gallery,.wp-block-video,.wp-block-embed) :where(figcaption) { margin-block:.75rem 0; padding-inline:.5rem; font-size:.8125rem; line-height:1.65; overflow-wrap:anywhere; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-image,.wp-block-gallery,.wp-block-video,.wp-block-embed) > :where(figcaption) { max-width:74ch; margin-inline:auto; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-code,pre.wp-block-preformatted) { max-width:100%; box-sizing:border-box; font-family:var(--wp--preset--font-family--mono); line-height:1.7; tab-size:4; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(:not(pre) > code) { font-family:var(--wp--preset--font-family--mono); overflow-wrap:anywhere; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(kbd) { display:inline; padding:.12em .4em; border:1px solid var(--tn-border); border-bottom-width:2px; border-radius:4px; background:var(--tn-paper); font-family:var(--wp--preset--font-family--mono); font-size:.85em; white-space:normal; }
.tnb-download-cta { padding:clamp(24px,4vw,40px); border:1px solid var(--tn-border); border-radius:10px; background:var(--tn-soft); }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.tnb-download-cta > :first-child) { margin-top:0; }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.tnb-download-cta > :last-child) { margin-bottom:0; }

/* Core's generic text-color flag collides with this established palette's
   "text" slug. Carry the actual authored color on these editorial blocks. */
:is(.wp-block-quote,.wp-block-pullquote,.wp-block-list).has-text-color { color:var(--tnb-editorial-text,var(--tn-text)) !important; }
:is(.tnb-article-content,.editor-styles-wrapper) .wp-block-quote p { line-height:inherit; }
:is(.tnb-article-content,.editor-styles-wrapper) .wp-block-pullquote p { font:inherit; }
:is(.tnb-article-content,.editor-styles-wrapper) .wp-block-pullquote:not(.has-text-color) > blockquote > p { color:var(--tn-accent); }
:where(.tnb-article-content,.editor-styles-wrapper) :where(.wp-block-quote,.wp-block-list).has-background :where(code) { color:inherit; background:transparent; border:1px solid currentColor; }

:is(.tnb-article-content,.editor-styles-wrapper) .tnb-download-cta > :first-child { margin-top:0; }

/* On an explicitly colored editorial surface, uncolored links share the chosen
   text color. Native inline/link-element color choices remain authoritative. */
:is(.tnb-article-content,.editor-styles-wrapper) :is(.wp-block-quote,.wp-block-pullquote,.wp-block-list).has-background:not([class*="wp-elements-"]) :where(a:not(.has-inline-color)) { color:inherit; }

/* Core overlays Gallery child captions with a capped gradient. Editorial
   captions belong below the media, where long text stays completely readable. */
:is(.tnb-article-content,.editor-styles-wrapper) .wp-block-gallery.has-nested-images figure.wp-block-image > figcaption {
 position:static; flex:0 0 auto; width:100%; max-height:none; overflow:visible;
 padding:.75rem .5rem 0; margin:0; box-sizing:border-box;
 background:none; color:var(--tn-muted); text-shadow:none;
}

/* Native navigation surfaces use the visitor palette, including Core overlay states. */
/* One control geometry; Core links and submenu buttons share the same hit area. */
.tnb-header .wp-block-navigation .wp-block-navigation-item > .wp-block-navigation-item__content {
 position:relative; display:inline-flex; align-items:center; min-height:44px;
 padding:10px 8px; border:0; border-radius:7px; background:transparent;
 color:inherit; text-decoration:none;
}
.tnb-header .wp-block-navigation .wp-block-navigation__submenu-container > .wp-block-navigation-item > .wp-block-navigation-item__content { padding:10px 8px; }
/* Core renders the top-level disclosure icon as a decorative button sibling. */
.tnb-header .wp-block-navigation__container > .has-child > .wp-block-navigation-item__content { padding-inline-end:calc(8px + .85em); }
.tnb-header .wp-block-navigation__container > .has-child > .wp-block-navigation__submenu-icon { position:absolute; right:8px; top:50%; margin:0; transform:translateY(-50%); }
.tnb-header .wp-block-navigation .wp-block-navigation-item > .wp-block-navigation-item__content:hover { color:var(--tn-accent); background:var(--tn-soft); }
.tnb-header .wp-block-navigation .wp-block-navigation-item > .wp-block-navigation-item__content:focus-visible { outline:2px solid var(--tn-accent); outline-offset:2px; }
/* The current-page line is out of flow: no added border, underline or shift. */
.tnb-header .wp-block-navigation .wp-block-navigation-item:is(.current-menu-item,.current_page_item,.current-menu-parent) > .wp-block-navigation-item__content,
.tnb-header .wp-block-navigation .wp-block-navigation-item > .wp-block-navigation-item__content[aria-current="page"] { color:var(--tn-accent); background:transparent; }
.tnb-header .wp-block-navigation .wp-block-navigation-item:is(.current-menu-item,.current_page_item,.current-menu-parent) > .wp-block-navigation-item__content::before,
.tnb-header .wp-block-navigation .wp-block-navigation-item > .wp-block-navigation-item__content[aria-current="page"]::before {
 content:""; position:absolute; inset-inline:8px; bottom:3px; height:2px;
 border-radius:1px; background:var(--tn-accent); pointer-events:none;
}
.tnb-header .wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open { background:var(--tn-paper); color:var(--tn-text); }

/* Native Polylang links share the product site's EN/EL control treatment. */
.tnb-language-switcher { display:inline-flex; gap:2px; padding:3px; border:1px solid var(--tn-border); border-radius:8px; flex-shrink:0; }
.tnb-language-switcher a { display:inline-flex; align-items:center; justify-content:center; min-width:32px; min-height:36px; padding:6px 8px; border-radius:5px; text-decoration:none; font-size:12px; font-weight:650; color:var(--tn-muted); }
.tnb-language-switcher a:hover,.tnb-language-switcher a:focus-visible,.tnb-language-switcher a[aria-current] { background:var(--tn-soft); color:var(--tn-accent); }
@media (min-width:1180px) and (max-width:1379px) {
 .tnb-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display:none !important; }
 .tnb-header .wp-block-navigation__responsive-container-open { display:flex !important; min-height:44px; min-width:44px; justify-content:center; align-items:center; border:1px solid var(--tn-border); border-radius:7px; }
 .tnb-header .wp-block-navigation__responsive-container.is-menu-open { background:var(--tn-paper); color:var(--tn-text); padding:32px; }
 .tnb-header .wp-block-navigation__responsive-container-close { min-height:44px; min-width:44px; }
}
@media (max-width:600px) {
 .tnb-brand { font-size:18px; gap:8px; }
 .tnb-header-inner { gap:8px; }
 .tnb-header-controls { gap:6px; }
 .tnb-language-switcher a { min-width:28px; padding-inline:5px; }
}
