/* ==========================================================================
   TSA Marine — Modern Base Stylesheet (v2)
   Deep-ocean design system: fluid type, glass surfaces, aqua accents.
   ========================================================================== */

:root {
	/* Brand */
	--tsa-navy:      #04121f;
	--tsa-navy-2:    #08203a;
	--tsa-primary:   #0b2d4d;
	--tsa-accent:    #0fb5b0;
	--tsa-accent-2:  #38d6f0;
	--tsa-accent-ink:#066d6b;

	/* Surfaces */
	--tsa-white:     #ffffff;
	--tsa-bg:        #ffffff;
	--tsa-bg-alt:    #f2f7f9;
	--tsa-bg-dark:   var(--tsa-navy);
	--tsa-surface:   #ffffff;

	/* Ink */
	--tsa-text:      #16222e;
	--tsa-muted:     #5d7183;
	--tsa-border:    #e3ebf0;
	--tsa-border-soft: rgba(11, 45, 77, .08);

	/* Shape */
	--tsa-radius:    20px;
	--tsa-radius-sm: 12px;
	--tsa-radius-xs: 8px;
	--tsa-radius-pill: 999px;

	/* Depth */
	--tsa-shadow:    0 24px 60px -28px rgba(4, 24, 44, .38);
	--tsa-shadow-sm: 0 10px 28px -18px rgba(4, 24, 44, .30);
	--tsa-shadow-lg: 0 40px 90px -40px rgba(4, 24, 44, .50);

	/* Motion */
	--tsa-ease: cubic-bezier(.22, 1, .36, 1);
	--tsa-t: .35s var(--tsa-ease);

	/* Layout */
	--tsa-container: 1200px;
	--tsa-gutter: clamp(20px, 4vw, 32px);

	/* Type */
	--tsa-font-body: 'Manrope', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
	--tsa-font-head: 'Sora', 'Manrope', system-ui, sans-serif;

	/* Gradients */
	--tsa-grad-accent: linear-gradient(120deg, var(--tsa-accent) 0%, var(--tsa-accent-2) 100%);
	--tsa-grad-deep:   linear-gradient(155deg, #04121f 0%, #08243f 48%, #0b3557 100%);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	font-family: var(--tsa-font-body);
	color: var(--tsa-text);
	background: var(--tsa-bg);
	line-height: 1.7;
	font-size: 1rem;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

img, svg, video, iframe { max-width: 100%; }
img, video { height: auto; display: block; }
a { color: var(--tsa-accent-ink); text-decoration: none; transition: color var(--tsa-t); }
a:hover, a:focus { color: var(--tsa-primary); }
:focus-visible { outline: 2px solid var(--tsa-accent); outline-offset: 3px; border-radius: 6px; }
::selection { background: rgba(15, 181, 176, .22); }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--tsa-font-head);
	color: var(--tsa-primary);
	line-height: 1.14;
	margin: 0 0 .55em;
	font-weight: 600;
	letter-spacing: -0.028em;
	text-wrap: balance;
}
h1 { font-size: clamp(2.1rem, 4.6vw, 3.4rem); }
h2 { font-size: clamp(1.7rem, 3.4vw, 2.6rem); }
h3 { font-size: clamp(1.15rem, 1.6vw, 1.4rem); }
h4 { font-size: 1.08rem; }
p  { margin: 0 0 1.1em; max-width: 72ch; }

.container { width: 100%; max-width: var(--tsa-container); margin: 0 auto; padding: 0 var(--tsa-gutter); }
.section { padding: clamp(64px, 9vw, 120px) 0; position: relative; }
.section-alt { background: var(--tsa-bg-alt); }
.section-dark { background: var(--tsa-grad-deep); color: #cbdbe8; }
.section-dark h2, .section-dark h3, .section-dark h4 { color: #fff; }
.section-head { max-width: 760px; margin: 0 auto clamp(36px, 5vw, 64px); text-align: center; }
.section-head p { margin-inline: auto; color: var(--tsa-muted); }
.section-cta { text-align: center; margin-top: 44px; }

.eyebrow {
	display: inline-flex; align-items: center; gap: 8px;
	text-transform: uppercase; letter-spacing: .18em;
	font-size: .72rem; font-weight: 700;
	color: var(--tsa-accent-ink); margin-bottom: 14px;
}
.eyebrow::before { content: ""; width: 22px; height: 2px; border-radius: 2px; background: var(--tsa-grad-accent); }
.section-head .eyebrow::after { content: ""; width: 22px; height: 2px; border-radius: 2px; background: var(--tsa-grad-accent); }
.section-dark .eyebrow { color: var(--tsa-accent-2); }

.screen-reader-text { border:0; clip:rect(1px,1px,1px,1px); height:1px; overflow:hidden; padding:0; position:absolute!important; width:1px; word-wrap:normal!important; }
.skip-link { position:absolute; left:-9999px; top:0; background:var(--tsa-primary); color:#fff; padding:10px 16px; z-index:9999; }
.skip-link:focus { left:8px; top:8px; }

/* Scroll reveal */
[data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .7s var(--tsa-ease), transform .7s var(--tsa-ease); }
[data-reveal].is-revealed { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
	[data-reveal] { opacity: 1; transform: none; }
}

/* ========== Buttons ========== */
.btn {
	display:inline-flex; align-items:center; justify-content:center; gap:10px;
	padding:14px 26px; border-radius:var(--tsa-radius-pill);
	font-family:var(--tsa-font-head); font-weight:600; font-size:.94rem; letter-spacing:-.01em;
	border:1px solid transparent; cursor:pointer; line-height:1; text-decoration:none;
	transition: transform var(--tsa-t), box-shadow var(--tsa-t), background var(--tsa-t), color var(--tsa-t), border-color var(--tsa-t);
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }
.btn-lg { padding:17px 32px; font-size:1rem; }
.btn-primary { background:var(--tsa-primary); color:#fff; box-shadow: 0 12px 28px -16px rgba(11,45,77,.9); }
.btn-primary:hover { background:#0e3a63; color:#fff; box-shadow: 0 18px 38px -18px rgba(11,45,77,.9); }
.btn-accent { background:var(--tsa-grad-accent); color:#04222b; box-shadow: 0 14px 34px -16px rgba(15,181,176,.85); }
.btn-accent:hover { color:#04222b; box-shadow: 0 20px 44px -18px rgba(15,181,176,.95); filter: saturate(1.08); }
.btn-ghost { background:rgba(255,255,255,.06); color:#fff; border-color:rgba(255,255,255,.28); backdrop-filter: blur(6px); }
.btn-ghost:hover { background:rgba(255,255,255,.14); color:#fff; border-color:rgba(255,255,255,.5); }

/* ========== Topbar ========== */
.tsa-topbar { background:var(--tsa-navy); color:#9db3c6; font-size:.82rem; letter-spacing:.01em; }
.tsa-topbar__inner { display:flex; align-items:center; justify-content:space-between; min-height:42px; gap:16px; }
.tsa-topbar__info { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:22px; }
.tsa-topbar__info li { display:inline-flex; align-items:center; gap:7px; }
.tsa-topbar__info svg { width:14px; height:14px; stroke:var(--tsa-accent-2); flex:none; }
.tsa-topbar__info a { color:#9db3c6; }
.tsa-topbar__info a:hover { color:#fff; }
.tsa-topbar__social ul { list-style:none; margin:0; padding:0; display:flex; gap:14px; }
.tsa-topbar__social a { color:#9db3c6; }
.tsa-topbar__social a:hover { color:var(--tsa-accent-2); }

/* ========== Header ========== */
.site-header {
	position:sticky; top:0; z-index:100;
	background:rgba(255,255,255,.72);
	backdrop-filter: saturate(180%) blur(16px);
	-webkit-backdrop-filter: saturate(180%) blur(16px);
	border-bottom:1px solid transparent;
	transition: box-shadow var(--tsa-t), background var(--tsa-t), border-color var(--tsa-t);
}
.site-header.is-stuck { background:rgba(255,255,255,.92); border-bottom-color:var(--tsa-border); box-shadow: 0 10px 30px -24px rgba(4,24,44,.6); }
.site-header__inner { display:flex; align-items:center; gap:24px; min-height:80px; }
.site-branding { margin-right:auto; }
.site-branding .site-title { display:flex; align-items:center; gap:12px; font-family:var(--tsa-font-head); color:var(--tsa-primary); font-weight:700; font-size:1.05rem; letter-spacing:-.02em; }
.brand-mark {
	display:inline-flex; align-items:center; justify-content:center;
	width:42px; height:42px; border-radius:14px;
	background:var(--tsa-grad-deep); color:#fff; font-weight:700; font-size:.8rem; letter-spacing:.04em;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.12), 0 10px 24px -14px rgba(4,24,44,.9);
}
.custom-logo { max-height:46px; width:auto; }

.main-navigation ul { list-style:none; margin:0; padding:0; display:flex; align-items:center; gap:2px; }
.main-navigation li { position:relative; }
.main-navigation a {
	display:block; padding:10px 14px; color:var(--tsa-primary);
	font-weight:600; font-size:.92rem; border-radius:var(--tsa-radius-pill);
	transition: background var(--tsa-t), color var(--tsa-t);
}
.main-navigation a:hover, .main-navigation .current-menu-item > a { background:rgba(15,181,176,.10); color:var(--tsa-accent-ink); }
.main-navigation .sub-menu {
	position:absolute; left:0; top:calc(100% + 8px);
	background:#fff; box-shadow:var(--tsa-shadow); border:1px solid var(--tsa-border);
	border-radius:var(--tsa-radius-sm); min-width:230px; padding:8px;
	display:none; flex-direction:column; align-items:stretch;
}
.main-navigation li:hover > .sub-menu, .main-navigation li:focus-within > .sub-menu { display:flex; }
.main-navigation .sub-menu a { padding:10px 12px; border-radius:var(--tsa-radius-xs); }

.menu-toggle {
	display:none; background:#fff; border:1px solid var(--tsa-border); border-radius:14px;
	width:46px; height:46px; padding:0; cursor:pointer; align-items:center; justify-content:center; flex-direction:column; gap:5px;
	transition: border-color var(--tsa-t);
}
.menu-toggle .bar { display:block; width:20px; height:2px; border-radius:2px; background:var(--tsa-primary); transition:transform .3s var(--tsa-ease), opacity .2s ease; }
.menu-toggle[aria-expanded="true"] .bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .bar:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] .bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ========== Hero ========== */
.hero {
	position:relative; overflow:hidden; color:#fff; isolation:isolate;
	padding: clamp(96px, 13vw, 168px) 0 clamp(88px, 12vw, 150px);
	background: var(--tsa-grad-deep);
}
.hero__bg {
	position:absolute; inset:-20%; pointer-events:none; z-index:-1;
	background:
		radial-gradient(38% 46% at 16% 24%, rgba(15,181,176,.34), transparent 70%),
		radial-gradient(42% 50% at 82% 30%, rgba(56,214,240,.20), transparent 70%),
		radial-gradient(50% 60% at 60% 100%, rgba(11,53,87,.85), transparent 70%);
	animation: tsa-drift 22s ease-in-out infinite alternate;
}
@keyframes tsa-drift { from { transform: translate3d(-1.5%, -1%, 0) scale(1); } to { transform: translate3d(2%, 1.5%, 0) scale(1.06); } }
.hero::after {
	content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; opacity:.5;
	background-image: linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px);
	background-size: 68px 68px;
	mask-image: radial-gradient(70% 70% at 50% 40%, #000 20%, transparent 100%);
	-webkit-mask-image: radial-gradient(70% 70% at 50% 40%, #000 20%, transparent 100%);
}
.hero__inner { position:relative; }
.hero__eyebrow {
	display:inline-flex; align-items:center; gap:10px;
	color:#bff0ee; font-weight:600; letter-spacing:.14em; text-transform:uppercase; font-size:.76rem;
	margin:0 0 22px; padding:9px 16px; border-radius:var(--tsa-radius-pill);
	background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.16); backdrop-filter: blur(8px);
}
.hero__eyebrow::before { content:""; width:7px; height:7px; border-radius:50%; background:var(--tsa-accent-2); box-shadow:0 0 0 4px rgba(56,214,240,.22); }
.hero__title { max-width:16ch; color:#fff; font-size:clamp(2.4rem, 6.2vw, 4.4rem); line-height:1.03; margin:0 0 22px; font-weight:600; }
.hero__subtitle { color:#b9cddd; font-size:clamp(1.02rem, 1.5vw, 1.2rem); max-width:660px; }
.hero__actions { display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.hero__badges {
	list-style:none; margin:clamp(44px, 6vw, 68px) 0 0; padding:26px 0 0;
	display:flex; flex-wrap:wrap; gap:clamp(20px, 4vw, 52px);
	color:#9fb6c9; font-size:.9rem; border-top:1px solid rgba(255,255,255,.12);
}
.hero__badges strong { display:block; color:#fff; font-family:var(--tsa-font-head); font-size:1.05rem; letter-spacing:-.02em; }

/* ========== Page hero (inner pages) ========== */
.page-hero {
	position:relative; overflow:hidden; padding: clamp(56px, 8vw, 96px) 0 clamp(40px, 5vw, 56px);
	background: var(--tsa-grad-deep); color:#c6d8e6;
}
.page-hero::after {
	content:""; position:absolute; inset:0; pointer-events:none;
	background: radial-gradient(40% 70% at 12% 20%, rgba(15,181,176,.28), transparent 70%);
}
.page-hero > .container { position:relative; z-index:1; }
.page-hero__title { color:#fff; margin:0 0 14px; }
.tsa-breadcrumb ol { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; font-size:.86rem; color:#93aec4; }
.tsa-breadcrumb .sep { color:#5e7d96; }
.tsa-breadcrumb a { color:#bff0ee; }
.tsa-breadcrumb a:hover { color:#fff; }

/* ========== Cards & grids ========== */
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px, 5vw, 64px); align-items:center; }

.values-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.value-card {
	background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius);
	padding:26px; box-shadow:var(--tsa-shadow-sm); transition: transform var(--tsa-t), box-shadow var(--tsa-t);
}
.value-card:hover { transform: translateY(-4px); box-shadow: var(--tsa-shadow); }
.value-card h3 { margin:0 0 8px; font-size:1.02rem; color:var(--tsa-accent-ink); }
.value-card p { margin:0; color:var(--tsa-muted); font-size:.94rem; }

.services-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.service-card {
	position:relative; overflow:hidden;
	background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius);
	padding:32px; box-shadow:var(--tsa-shadow-sm);
	transition: transform var(--tsa-t), box-shadow var(--tsa-t), border-color var(--tsa-t);
}
.service-card::before {
	content:""; position:absolute; inset:0 0 auto; height:3px; background:var(--tsa-grad-accent);
	transform: scaleX(0); transform-origin: left; transition: transform .45s var(--tsa-ease);
}
.service-card:hover { transform:translateY(-6px); box-shadow:var(--tsa-shadow); border-color:rgba(15,181,176,.35); }
.service-card:hover::before { transform: scaleX(1); }
.service-card .icon {
	width:56px; height:56px; border-radius:18px;
	background:linear-gradient(140deg, rgba(15,181,176,.16), rgba(56,214,240,.14));
	color:var(--tsa-accent-ink); display:inline-flex; align-items:center; justify-content:center;
	margin-bottom:18px; border:1px solid rgba(15,181,176,.22);
}
.service-card .icon svg { width:26px; height:26px; stroke:currentColor; }
.service-card h3 { font-size:1.12rem; margin-bottom:10px; }
.service-card p { margin:0; color:var(--tsa-muted); font-size:.95rem; }

.industries-grid { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(6,1fr); gap:16px; }
.industries-grid li {
	background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius-sm);
	padding:26px 14px; text-align:center; font-weight:600; font-size:.92rem; color:var(--tsa-primary);
	display:flex; flex-direction:column; align-items:center; gap:12px;
	transition: transform var(--tsa-t), border-color var(--tsa-t), background var(--tsa-t);
}
.industries-grid li:hover { transform:translateY(-4px); border-color:rgba(15,181,176,.4); background:linear-gradient(180deg,#fff,rgba(15,181,176,.05)); }
.industries-grid svg { width:28px; height:28px; stroke:var(--tsa-accent-ink); }

.stats-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:24px; text-align:center; }
.stat { padding:12px; }
.stat-num { display:block; font-family:var(--tsa-font-head); font-size:clamp(2.4rem,4.4vw,3.4rem); font-weight:600; letter-spacing:-.04em; background:var(--tsa-grad-accent); -webkit-background-clip:text; background-clip:text; color:transparent; }
.stat-label { display:block; margin-top:8px; color:#8ea9bf; font-size:.82rem; letter-spacing:.14em; text-transform:uppercase; }

.why-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.why-item {
	background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius);
	padding:28px; position:relative; transition: transform var(--tsa-t), box-shadow var(--tsa-t);
}
.why-item::before {
	content:""; position:absolute; left:0; top:22px; bottom:22px; width:3px; border-radius:3px; background:var(--tsa-grad-accent);
}
.why-item:hover { transform:translateY(-4px); box-shadow:var(--tsa-shadow-sm); }
.why-item h4 { margin:0 0 8px; color:var(--tsa-primary); }
.why-item p { margin:0; color:var(--tsa-muted); font-size:.94rem; }

.testimonials-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.testimonial {
	position:relative; background:var(--tsa-surface); border:1px solid var(--tsa-border);
	border-radius:var(--tsa-radius); padding:34px 30px 28px; margin:0; box-shadow:var(--tsa-shadow-sm);
	transition: transform var(--tsa-t), box-shadow var(--tsa-t);
}
.testimonial::before {
	content:"\201C"; position:absolute; top:6px; left:24px;
	font-family:var(--tsa-font-head); font-size:4.2rem; line-height:1; color:rgba(15,181,176,.22);
}
.testimonial:hover { transform:translateY(-4px); box-shadow:var(--tsa-shadow); }
.testimonial p { position:relative; font-size:1rem; color:var(--tsa-primary); }
.testimonial footer { margin-top:14px; color:var(--tsa-muted); font-size:.88rem; font-weight:600; }

/* Posts / projects */
.post-grid, .projects-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.post-card, .project-card, .card {
	background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius);
	overflow:hidden; box-shadow:var(--tsa-shadow-sm); display:flex; flex-direction:column;
	transition: transform var(--tsa-t), box-shadow var(--tsa-t);
}
.post-card:hover, .project-card:hover, .card:hover { transform:translateY(-5px); box-shadow:var(--tsa-shadow); }
.post-card__thumb { overflow:hidden; aspect-ratio: 16 / 10; background:var(--tsa-bg-alt); }
.post-card__thumb img { width:100%; height:100%; object-fit:cover; transition: transform .6s var(--tsa-ease); }
.post-card:hover .post-card__thumb img { transform: scale(1.05); }
.post-card__body { padding:24px; display:flex; flex-direction:column; gap:10px; }
.post-card__title { margin:0; font-size:1.1rem; }
.post-card__excerpt { margin:0; color:var(--tsa-muted); font-size:.94rem; }
.project-card { padding:28px; }
.read-more { font-weight:600; font-family:var(--tsa-font-head); font-size:.9rem; display:inline-flex; align-items:center; gap:6px; }
.read-more::after { content:"\2192"; transition: transform var(--tsa-t); }
.read-more:hover::after { transform: translateX(4px); }
.entry-meta, .posted-on, .byline, .cat-links { color:var(--tsa-muted); font-size:.85rem; }
.tag-label, .tag { display:inline-block; padding:5px 12px; border-radius:var(--tsa-radius-pill); background:rgba(15,181,176,.10); color:var(--tsa-accent-ink); font-size:.78rem; font-weight:600; }

/* ========== FAQ / accordion ========== */
.accordion { background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius); padding:22px 26px; margin-bottom:14px; box-shadow:var(--tsa-shadow-sm); }
.accordion summary { cursor:pointer; font-family:var(--tsa-font-head); font-weight:600; color:var(--tsa-primary); list-style:none; display:flex; justify-content:space-between; gap:16px; align-items:center; }
.accordion summary::-webkit-details-marker { display:none; }
.accordion summary::after { content:"+"; font-size:1.4rem; line-height:1; color:var(--tsa-accent); transition:transform var(--tsa-t); }
.accordion[open] summary::after { transform:rotate(45deg); }
.accordion p { margin:14px 0 0; color:var(--tsa-muted); }

/* ========== Forms ========== */
.contact-page { padding: clamp(56px, 8vw, 96px) 0; }
.contact-form label { display:block; margin-bottom:18px; }
.contact-form label span { display:block; font-weight:600; color:var(--tsa-primary); margin-bottom:8px; font-size:.88rem; }
.contact-form input, .contact-form textarea, .search-field, .newsletter-form input, select {
	width:100%; padding:14px 16px; border:1px solid var(--tsa-border); border-radius:var(--tsa-radius-sm);
	font:inherit; background:#fff; color:var(--tsa-text); transition: border-color var(--tsa-t), box-shadow var(--tsa-t);
}
.contact-form input:focus, .contact-form textarea:focus, .search-field:focus {
	border-color:var(--tsa-accent); outline:none; box-shadow:0 0 0 4px rgba(15,181,176,.16);
}
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.contact-info { background:var(--tsa-bg-alt); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius); padding:32px; }
.contact-info ul { list-style:none; margin:0; padding:0; }
.contact-info li { padding:14px 0; border-bottom:1px solid var(--tsa-border); }
.contact-info li:last-child { border-bottom:none; }
.alert { padding:14px 18px; border-radius:var(--tsa-radius-sm); margin-bottom:18px; font-size:.94rem; }
.alert-success { background:#e6f8f2; color:#0a5a48; border:1px solid #bfe9db; }
.alert-error { background:#fdecec; color:#8a1e1e; border:1px solid #f4c7c7; }
.search-form { display:flex; gap:10px; }
.search-submit { padding:12px 20px; border:none; border-radius:var(--tsa-radius-sm); background:var(--tsa-primary); color:#fff; font-weight:600; cursor:pointer; }
.search-submit:hover { background:var(--tsa-accent-ink); }

/* ========== Contact CTA band ========== */
.contact-cta { background:var(--tsa-grad-deep); color:#c6d8e6; }
.contact-cta__inner { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:24px; }
.contact-cta h2 { color:#fff; margin:0 0 8px; }

/* ========== Map ========== */
.map-embed { border-radius:var(--tsa-radius); overflow:hidden; box-shadow:var(--tsa-shadow-sm); margin-top:28px; border:1px solid var(--tsa-border); }
.map-embed iframe { display:block; width:100%; height:440px; border:0; }
.map-placeholder { display:flex; align-items:center; justify-content:center; height:360px; background:linear-gradient(135deg,#eaf5f7,#dcecf3); color:var(--tsa-primary); text-align:center; padding:24px; font-weight:600; border-radius:var(--tsa-radius); }

/* ========== Footer ========== */
.site-footer { background:var(--tsa-navy); color:#a9bece; margin-top:0; position:relative; }
.site-footer::before { content:""; display:block; height:2px; background:var(--tsa-grad-accent); opacity:.7; }
.footer-cta { display:flex; flex-wrap:wrap; gap:24px; align-items:center; justify-content:space-between; padding:clamp(44px,6vw,68px) var(--tsa-gutter); border-bottom:1px solid rgba(255,255,255,.08); max-width:var(--tsa-container); margin:0 auto; }
.footer-cta h2 { color:#fff; margin:0 0 8px; }
.footer-cta p  { margin:0; color:#8fa8bd; }
.footer-widgets { display:grid; grid-template-columns:2fr 1fr 1fr 1.4fr; gap:40px; padding:clamp(48px,6vw,72px) var(--tsa-gutter) 44px; max-width:var(--tsa-container); margin:0 auto; }
.footer-widgets h4 { color:#fff; margin:0 0 16px; font-size:.82rem; text-transform:uppercase; letter-spacing:.14em; }
.footer-widgets ul { list-style:none; margin:0; padding:0; }
.footer-widgets li { padding:7px 0; }
.footer-widgets a { color:#a9bece; font-size:.94rem; }
.footer-widgets a:hover { color:var(--tsa-accent-2); }
.footer-col p { color:#8fa8bd; font-size:.94rem; }
.footer-contact li { border-bottom:1px solid rgba(255,255,255,.07); padding:10px 0; font-size:.92rem; }
.newsletter-form { display:flex; flex-wrap:wrap; gap:10px; }
.newsletter-form input { flex:1 1 170px; background:rgba(255,255,255,.06); color:#fff; border-color:rgba(255,255,255,.16); }
.newsletter-form input::placeholder { color:#7f97ad; }
.newsletter-msg { display:block; width:100%; color:#8fa8bd; font-size:.82rem; margin-top:8px; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.08); }
.footer-bottom__inner { display:flex; flex-wrap:wrap; gap:16px; justify-content:space-between; align-items:center; padding:22px var(--tsa-gutter); font-size:.86rem; color:#7f97ad; max-width:var(--tsa-container); margin:0 auto; }
.footer-menu ul { list-style:none; margin:0; padding:0; display:flex; gap:18px; }

/* ========== Layout utilities ========== */
.content-with-sidebar { display:grid; grid-template-columns:minmax(0,1fr) 330px; gap:48px; padding:clamp(48px,7vw,84px) var(--tsa-gutter); max-width:var(--tsa-container); margin:0 auto; }
.widget-area .widget { background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius); padding:24px; margin-bottom:22px; box-shadow:var(--tsa-shadow-sm); }
.widget-title { margin:0 0 14px; font-size:.82rem; text-transform:uppercase; letter-spacing:.14em; color:var(--tsa-primary); }
.page-narrow .page-article { max-width:820px; margin:0 auto; padding:clamp(48px,7vw,84px) 0; }
.page-article { padding:clamp(48px,7vw,84px) 0; }
.entry-content { font-size:1.03rem; }
.entry-content h3 { margin-top:1.8em; }
.entry-content ul { padding-left:1.2em; }
.entry-content blockquote { margin:1.6em 0; padding:20px 26px; border-left:3px solid var(--tsa-accent); background:var(--tsa-bg-alt); border-radius:0 var(--tsa-radius-sm) var(--tsa-radius-sm) 0; }
.entry-thumbnail img { border-radius:var(--tsa-radius); box-shadow:var(--tsa-shadow-sm); }
.profile-table { width:100%; border-collapse:separate; border-spacing:0; margin:18px 0 28px; border:1px solid var(--tsa-border); border-radius:var(--tsa-radius); overflow:hidden; }
.profile-table th, .profile-table td { text-align:left; padding:14px 18px; border-bottom:1px solid var(--tsa-border); vertical-align:top; font-size:.95rem; }
.profile-table tr:last-child th, .profile-table tr:last-child td { border-bottom:none; }
.profile-table th { width:230px; color:var(--tsa-primary); background:var(--tsa-bg-alt); font-weight:600; }
.large-text { font-size:1.1rem; color:var(--tsa-muted); }

/* Back to top */
.back-to-top {
	position:fixed; right:22px; bottom:22px; width:48px; height:48px; border-radius:50%;
	border:none; background:var(--tsa-grad-accent); color:#04222b; font-size:1.1rem; cursor:pointer;
	opacity:0; pointer-events:none; transform: translateY(10px);
	transition: opacity var(--tsa-t), transform var(--tsa-t); box-shadow:var(--tsa-shadow); z-index:99;
}
.back-to-top.is-visible { opacity:1; pointer-events:auto; transform:none; }
.back-to-top:hover { transform: translateY(-3px); }

/* Comments */
.comments-area { padding-top:8px; }
.comment-list { list-style:none; padding:0; }
.comment-list .comment { background:var(--tsa-surface); border:1px solid var(--tsa-border); border-radius:var(--tsa-radius-sm); padding:20px; margin-bottom:14px; }

/* Pagination */
.nav-links { display:flex; flex-wrap:wrap; gap:8px; margin-top:40px; }
.nav-links .page-numbers { display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:44px; padding:0 12px; border:1px solid var(--tsa-border); border-radius:var(--tsa-radius-sm); color:var(--tsa-primary); font-weight:600; }
.nav-links .page-numbers.current, .nav-links .page-numbers:hover { background:var(--tsa-primary); color:#fff; border-color:var(--tsa-primary); }

/* 404 / empty states */
.error-404, .no-results, .not-found { padding:clamp(56px,8vw,96px) 0; text-align:center; }
