/* ==========================================================================
   Rorax — WordPress + blog styles.
   Built on the template tokens from main.css:
   --bg-primary --bg-secondary --text-primary --text-secondary --accent
   --accent-hover --border-primary ; Montserrat (headings) + Inter (text).
   ========================================================================== */

:root {
	--rx-card-bg: #161616;
	--rx-card-border: #222;
	--rx-muted: #8a8a8a;
	--rx-line: rgba(255, 255, 255, .12);
	--rx-header-h: 4rem;
}
html.light {
	--rx-card-bg: #fff;
	--rx-card-border: #e5e5e0;
	--rx-muted: #777;
	--rx-line: rgba(26, 26, 26, .12);
}

/* ---------- Base / accessibility ---------- */
.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important;
}
.rx-skip {
	position: absolute; left: -9999px; top: 0; z-index: 100000;
	background: var(--accent); color: #000; padding: .75rem 1rem;
	font: 700 12px/1 Montserrat, sans-serif; letter-spacing: .15em; text-transform: uppercase;
}
.rx-skip:focus { left: 1rem; top: 1rem; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* Anchored sections land below the sticky header. */
section[id], [id].practice-card { scroll-margin-top: calc(var(--rx-header-h) + 8px); }

/* Responsive header, protected against plugins that ship a global `.hidden{display:none}`
   (unlayered CSS beats the template's layered Tailwind utilities, e.g. for logged-in admins). */
@media (min-width: 768px) {
	.rx-header nav[aria-label="Primary"] { display: flex !important; }
	.rx-header #mobile-menu-toggle, #mobile-menu-drawer.rx-mobile-drawer { display: none !important; }
}
@media (max-width: 767.98px) {
	.rx-header nav[aria-label="Primary"] { display: none !important; }
}
@media (min-width: 640px) {
	br.sm\:inline { display: inline !important; }
}

/* WordPress admin bar + sticky header. */
.admin-bar .rx-header { top: 32px; }
.admin-bar .rx-mobile-drawer { top: calc(4rem + 32px); }
@media screen and (max-width: 782px) {
	.admin-bar .rx-header { top: 46px; }
	.admin-bar .rx-mobile-drawer { top: calc(4rem + 46px); }
}
@media screen and (max-width: 600px) {
	.admin-bar .rx-header { top: 0; }
	.admin-bar .rx-mobile-drawer { top: 4rem; }
}

/* Practice cards are buttons now (keyboard accessible) — keep the template look. */
button.practice-card { width: 100%; font: inherit; color: inherit; text-align: left; }
.practice-card-title { display: block; }
.rx-modal-desc p + p { margin-top: 1em; }

/* Map: OpenStreetMap tiles in grayscale (light) / inverted grayscale (dark).
   The filter goes on the tiles only, so the gold marker and the credit keep their colours. */
#leaflet-map, html.light #leaflet-map { filter: none; background: #1b1b1b; }
html.light #leaflet-map { background: #e9e9e9; }
#leaflet-map .leaflet-tile-pane { filter: grayscale(1) invert(1) brightness(.88) contrast(.92); }
html.light #leaflet-map .leaflet-tile-pane { filter: grayscale(1) contrast(.95) brightness(1.03); }
/* OpenStreetMap credit must stay visible and clickable (above the "open map" overlay). */
.leaflet-map-wrapper .leaflet-bottom { z-index: 1001; }
.leaflet-map-wrapper #leaflet-map .leaflet-control-attribution {
	background: rgba(13, 13, 13, .75); color: #9a9a9a; font: 400 10px/1.4 Inter, sans-serif; padding: 2px 6px; margin: 0;
}
.leaflet-map-wrapper #leaflet-map .leaflet-control-attribution a { color: #d0d0d0; text-decoration: none; }
html.light .leaflet-map-wrapper #leaflet-map .leaflet-control-attribution { background: rgba(255, 255, 255, .82); color: #666; }
html.light .leaflet-map-wrapper #leaflet-map .leaflet-control-attribution a { color: #333; }

/* Honeypot. */
.rx-hp { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }

#contact-form button[type="submit"][disabled] { opacity: .6; cursor: wait; }
html.light #contact-form button[type="submit"] { color: #4A320F; }
html.light #form-success { color: #047857; }
html.light #form-error { color: #b91c1c; }

/* ---------- Buttons / chips ---------- */
.rx-btn,
.wp-block-button__link,
.wp-element-button,
input[type="submit"].rx-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
	background: var(--accent); color: #000; border: 0; border-radius: 0;
	font: 700 12px/1 Montserrat, sans-serif; letter-spacing: .2em; text-transform: uppercase;
	padding: 1rem 2rem; cursor: pointer; transition: background-color .2s; text-decoration: none;
}
.rx-btn:hover, .wp-block-button__link:hover, .wp-element-button:hover { background: var(--accent-hover); color: #000; }
html.light .rx-btn, html.light .wp-block-button__link, html.light .wp-element-button { color: #fff; }

.rx-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.rx-chip {
	display: inline-block; padding: .5rem .9rem; border: 1px solid var(--rx-line); border-radius: 999px;
	font: 600 11px/1 Montserrat, sans-serif; letter-spacing: .12em; text-transform: uppercase;
	color: var(--text-secondary); transition: border-color .25s, color .25s;
}
.rx-chip:hover, .rx-chip.is-active { border-color: var(--accent); color: var(--accent); }

/* ---------- Blog list ---------- */
.rx-blog .practices-title { margin-bottom: 1rem; }
.rx-archive-desc { margin-top: .5rem; line-height: 1.6; }
.rx-blog-tools {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem;
	margin: -1.5rem 0 3rem;
}
.rx-search { position: relative; display: flex; align-items: center; min-width: 260px; flex: 0 1 340px; margin-left: auto; }
.rx-search input[type="search"] { width: 100%; padding-right: 2.75rem !important; -webkit-appearance: none; appearance: none; }
.rx-search__btn {
	position: absolute; right: .5rem; top: 50%; transform: translateY(-50%);
	color: var(--accent); background: none; border: 0; padding: .4rem; cursor: pointer;
}

.rx-post-grid { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 640px) { .rx-post-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .rx-post-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.rx-post-card {
	background: var(--rx-card-bg); border: .5px solid var(--rx-card-border); border-radius: 4px;
	transition: border-color .4s, transform .4s, box-shadow .4s; overflow: hidden;
}
.rx-post-card:hover { transform: translateY(-2px); border-color: var(--accent); }
html.light .rx-post-card:hover { box-shadow: 0 10px 30px rgba(184, 144, 28, .06); }
.rx-post-card__link { display: flex; flex-direction: column; height: 100%; }
.rx-post-card__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--bg-secondary); }
.rx-post-card__media img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); transition: filter .5s, transform .6s; }
.rx-post-card:hover .rx-post-card__media img { filter: grayscale(0); transform: scale(1.03); }
.rx-post-card__body { display: flex; flex-direction: column; gap: .9rem; padding: 1.75rem 1.5rem 1.5rem; flex: 1; }
.rx-post-card__meta {
	display: flex; flex-wrap: wrap; gap: .4rem 1rem; align-items: center;
	font: 600 10px/1.4 Montserrat, sans-serif; letter-spacing: .15em; text-transform: uppercase; color: var(--rx-muted);
}
.rx-post-card__cat { color: var(--accent); }
.rx-post-card__title {
	font: 700 16px/1.4 Montserrat, sans-serif; letter-spacing: .04em; text-transform: uppercase; color: var(--text-primary);
}
.rx-post-card__excerpt { font: 400 14px/1.6 Inter, sans-serif; color: var(--text-secondary); opacity: .85; }
.rx-post-card__more {
	margin-top: auto; padding-top: .5rem;
	font: 700 11px/1 Montserrat, sans-serif; letter-spacing: .2em; text-transform: uppercase; color: var(--accent);
}
.rx-empty { padding: 3rem 0; }

.rx-pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin-top: 4rem; }
.rx-pagination .page-numbers,
.rx-pagination > a, .rx-pagination > span {
	min-width: 2.75rem; padding: .8rem 1rem; text-align: center; border: 1px solid var(--rx-line);
	font: 600 12px/1 Montserrat, sans-serif; letter-spacing: .1em; text-transform: uppercase; color: var(--text-secondary);
	transition: border-color .25s, color .25s;
}
.rx-pagination a:hover, .rx-pagination .current { border-color: var(--accent); color: var(--accent); }
.rx-pagination .dots { border-color: transparent; }

/* ---------- Single post / page ---------- */
.rx-single__header { padding: 5rem 0 3.5rem; }
.rx-crumbs {
	display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1.5rem;
	font: 600 11px/1 Montserrat, sans-serif; letter-spacing: .2em; text-transform: uppercase; color: var(--accent);
}
.rx-crumbs a:hover { color: var(--text-primary); }
.rx-single__title { font-weight: 800; font-size: clamp(1.75rem, 1.1rem + 2.6vw, 2.75rem); line-height: 1.15; letter-spacing: .03em; }
.rx-single__meta {
	display: flex; flex-wrap: wrap; gap: .5rem .9rem; margin-top: 1.5rem;
	font: 500 12px/1.4 Inter, sans-serif; color: var(--rx-muted);
}
.rx-single__hero { margin-top: 3rem; }
.rx-single__hero img { width: 100%; height: auto; border-radius: 4px; }

.rx-prose, .rx-tags, .rx-comments { max-width: 760px; }
.rx-prose { padding-top: 3.5rem; padding-bottom: 3rem; font: 400 17px/1.75 Inter, sans-serif; color: var(--text-secondary); }
.rx-prose > * + * { margin-top: 1.25em; }
.rx-prose h2, .rx-prose h3, .rx-prose h4 {
	font-family: Montserrat, sans-serif; color: var(--text-primary); text-transform: uppercase; line-height: 1.3;
}
.rx-prose h2 { font-size: 1.5rem; font-weight: 800; letter-spacing: .04em; margin-top: 2.4em; }
.rx-prose h3 { font-size: 1.15rem; font-weight: 700; letter-spacing: .06em; margin-top: 2em; }
.rx-prose h4 { font-size: .95rem; font-weight: 700; letter-spacing: .1em; margin-top: 1.8em; color: var(--accent); }
.rx-prose a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.rx-prose a:hover { color: var(--text-primary); }
.rx-prose strong, .rx-prose b { color: var(--text-primary); font-weight: 600; }
/* The template forces <em>/<i> to bold upright — restore italics in articles. */
.rx-prose em, .rx-prose i, .rx-prose cite { font-style: italic !important; font-weight: inherit; }
.rx-prose ul, .rx-prose ol { padding-left: 1.4em; }
.rx-prose ul { list-style: none; }
.rx-prose ul > li { position: relative; }
.rx-prose ul > li::before { content: ""; position: absolute; left: -1.1em; top: .78em; width: .5em; height: 1px; background: var(--accent); }
.rx-prose ol { list-style: decimal; }
.rx-prose ol > li::marker { color: var(--accent); font: 700 .9em Montserrat, sans-serif; }
.rx-prose li + li { margin-top: .4em; }
.rx-prose blockquote, .rx-prose .wp-block-quote {
	border-left: 2px solid var(--accent); padding: .25em 0 .25em 1.5em; color: var(--text-primary);
	font-size: 1.1em; line-height: 1.6;
}
.rx-prose blockquote cite, .rx-prose .wp-block-quote cite { display: block; margin-top: .75em; font: 600 11px/1 Montserrat, sans-serif; letter-spacing: .2em; text-transform: uppercase; font-style: normal !important; color: var(--accent); }
.rx-prose .wp-block-pullquote { border-top: 1px solid var(--accent); border-bottom: 1px solid var(--accent); padding: 2em 0; text-align: center; }
.rx-prose .wp-block-pullquote blockquote { border: 0; padding: 0; font: 700 1.35em/1.45 Montserrat, sans-serif; text-transform: uppercase; letter-spacing: .03em; }
.rx-prose hr, .rx-prose .wp-block-separator { border: 0; height: 1px; background: var(--rx-line); margin: 2.5em auto; }
.rx-prose img, .rx-prose video { max-width: 100%; height: auto; border-radius: 4px; }
.rx-prose figure { margin-left: 0; margin-right: 0; }
.rx-prose figcaption, .rx-prose .wp-caption-text { margin-top: .6em; font: 400 13px/1.5 Inter, sans-serif; color: var(--rx-muted); text-align: center; }
.rx-prose code { font-size: .88em; background: var(--bg-secondary); border: 1px solid var(--rx-line); padding: .1em .35em; border-radius: 3px; }
.rx-prose pre { background: var(--bg-secondary); border: 1px solid var(--rx-line); padding: 1.1em 1.25em; overflow-x: auto; font-size: 14px; line-height: 1.6; }
.rx-prose pre code { background: none; border: 0; padding: 0; }
.rx-prose table { width: 100%; border-collapse: collapse; font-size: 15px; }
.rx-prose th, .rx-prose td,
.rx-prose .wp-block-table th, .rx-prose .wp-block-table td { border: 0; border-bottom: 1px solid var(--rx-line); padding: .7em .6em; text-align: left; vertical-align: top; }
.rx-prose .wp-block-table thead { border-bottom: 1px solid var(--accent); }
.rx-prose .wp-block-table tfoot { border-top: 1px solid var(--rx-line); }
.rx-prose th { font: 700 11px/1.4 Montserrat, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.rx-prose .wp-block-table { overflow-x: auto; }
.rx-prose .wp-block-buttons { display: flex; flex-wrap: wrap; gap: .75rem; }
.rx-prose .wp-block-button__link { text-decoration: none; color: #000; }
.rx-prose .wp-block-embed iframe { max-width: 100%; }

.alignleft { float: left; margin: .3em 1.5em 1em 0; max-width: 50%; }
.alignright { float: right; margin: .3em 0 1em 1.5em; max-width: 50%; }
.aligncenter { display: block; margin-left: auto; margin-right: auto; }
.rx-prose .alignwide { margin-left: -8vw; margin-right: -8vw; max-width: calc(100% + 16vw); }
@media (max-width: 1000px) { .rx-prose .alignwide { margin-left: 0; margin-right: 0; max-width: 100%; } }
.rx-prose .alignfull { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: 100vw; width: 100vw; }
.rx-prose::after { content: ""; display: table; clear: both; }
.wp-caption { max-width: 100%; }
.sticky .rx-post-card__title::before { content: "★ "; color: var(--accent); }

.rx-tags { display: flex; flex-wrap: wrap; gap: .5rem; padding-bottom: 3rem; }

.rx-post-nav { display: grid; grid-template-columns: 1fr; gap: 0 3rem; padding-top: 1rem; padding-bottom: 3rem; border-top: 1px solid var(--rx-line); }
@media (min-width: 768px) { .rx-post-nav { grid-template-columns: 1fr 1fr; } }
.rx-post-nav__item { display: flex; flex-direction: column; gap: .75rem; }
.rx-post-nav__item--next { text-align: right; }
@media (min-width: 768px) { .rx-post-nav__item--next { grid-column: 2; } }

/* ---------- Comments ---------- */
.rx-comments { padding-bottom: 4rem; }
.rx-comments h2 { margin-bottom: 1.5rem; }
.rx-comment-list { list-style: none; padding: 0; margin: 0 0 3rem; }
.rx-comment-list .comment-body { border-bottom: 1px solid var(--rx-line); padding: 1.25rem 0; font-size: 15px; line-height: 1.6; color: var(--text-secondary); }
.rx-comment-list .children { list-style: none; padding-left: 1.5rem; }
.rx-comment-list .comment-meta { font-size: 12px; color: var(--rx-muted); margin-bottom: .5rem; }
.rx-comment-list .avatar { border-radius: 50%; float: left; margin-right: .75rem; filter: grayscale(1); }
.comment-form { display: flex; flex-direction: column; gap: 1rem; }
.comment-form label { display: block; margin-bottom: .4rem; font: 700 11px/1 Montserrat, sans-serif; letter-spacing: .15em; text-transform: uppercase; color: #888; }
.comment-form input[type="text"], .comment-form input[type="email"], .comment-form input[type="url"], .comment-form textarea {
	width: 100%; background: rgba(255, 255, 255, .02); border: 1px solid rgba(255, 255, 255, .22); color: var(--text-primary);
	padding: 12px 14px; font: 400 15px Inter, sans-serif; border-radius: 2px; outline: none;
}
html.light .comment-form input[type="text"], html.light .comment-form input[type="email"], html.light .comment-form input[type="url"], html.light .comment-form textarea { border-color: rgba(26, 26, 26, .22); background: rgba(0, 0, 0, .01); }
.comment-form input:focus, .comment-form textarea:focus { border-color: var(--accent); }
.comment-form .comment-form-cookies-consent { display: flex; gap: .5rem; align-items: flex-start; font-size: 12px; color: var(--text-secondary); }
.comment-form .comment-form-cookies-consent label { text-transform: none; letter-spacing: 0; font: 400 12px Inter, sans-serif; }

/* ---------- CTA band ---------- */
.rx-cta { padding: 5rem 0; }
.rx-cta__inner { display: flex; flex-direction: column; gap: 2rem; align-items: flex-start; justify-content: space-between; }
@media (min-width: 900px) { .rx-cta__inner { flex-direction: row; align-items: center; } .rx-cta .rx-btn { white-space: nowrap; flex-shrink: 0; } }
.rx-cta__title { font-weight: 700; font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.1rem); line-height: 1.2; letter-spacing: -.01em; }

/* ---------- 404 ---------- */
.rx-404__num { font-size: clamp(5rem, 3rem + 10vw, 10rem); line-height: 1; letter-spacing: .05em; margin-bottom: 1rem; opacity: .9; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
