:root {
  --tsm-navy: #2E4052;
  --tsm-teal: #39A2AF;
  --tsm-snow: #F4EDED;
  --tsm-gold: #D7A533;
  --tsm-brown: #854D27;
  --tsm-ink: #172C3D;
  --tsm-paper: #FBF9F5;
  --tsm-white: #FFFFFF;
  --tsm-line: rgba(46, 64, 82, .16);
  --tsm-serif: "DM Serif Display", Georgia, serif;
  --tsm-sans: "DM Sans", Arial, sans-serif;
  --tsm-container: 1180px;
  --tsm-radius: 44px;
  --tsm-section-y: clamp(64px, 7vw, 112px);
}

html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--tsm-navy);
  background: var(--tsm-paper);
  font-family: var(--tsm-sans);
  font-size: 16px;
  line-height: 1.62;
  -webkit-font-smoothing: antialiased;
}

body, button, input, select, textarea { font-family: var(--tsm-sans); }
body h1, body h2, body h3, body h4, body h5, body h6 {
  margin: 0 0 .45em;
  color: var(--tsm-ink);
  font-family: var(--tsm-serif);
  font-weight: 400;
  line-height: .98;
  letter-spacing: -.025em;
}
body h1 { font-size: clamp(3.25rem, 7vw, 6.8rem); }
body h2 { font-size: clamp(2.45rem, 4.9vw, 4.9rem); }
body h3 { font-size: clamp(1.8rem, 3vw, 3rem); }
body h4 { font-size: clamp(1.35rem, 2vw, 2rem); }
body p { margin: 0 0 1.1rem; }
body a { color: inherit; }

.tsm-shell { width: min(calc(100% - 44px), var(--tsm-container)); margin-inline: auto; }
.tsm-section { padding-block: var(--tsm-section-y); border-top: 1px solid var(--tsm-line); }
.tsm-section--tight { padding-block: clamp(42px, 4vw, 68px); }
.tsm-section--dark { position: relative; overflow: hidden; color: #fff; background: var(--tsm-ink); }
.tsm-section--dark h1, .tsm-section--dark h2, .tsm-section--dark h3, .tsm-section--dark p { color: #fff; }
.tsm-section--snow { background: rgba(244, 237, 237, .48); }

.tsm-eyebrow {
  display: inline-flex; align-items: center; gap: 12px;
  margin: 0 0 22px; font-size: 11px; line-height: 1.2; font-weight: 700;
  letter-spacing: .34em; text-transform: uppercase; color: var(--tsm-navy);
}
.tsm-eyebrow::after { content: ""; display: block; width: 38px; height: 2px; background: var(--tsm-gold); }
.tsm-section--dark .tsm-eyebrow { color: #fff; }

.tsm-lead { max-width: 760px; font-size: clamp(1.05rem, 1.6vw, 1.3rem); line-height: 1.55; }
.tsm-accent { color: var(--tsm-teal); }
.tsm-rule { width: 58px; height: 3px; margin: 28px 0; background: var(--tsm-gold); }
.tsm-kicker { font-size: clamp(1.7rem, 3vw, 3.15rem); font-family: var(--tsm-serif); line-height: 1.06; color: var(--tsm-ink); }

.tsm-btn {
  display: inline-flex; align-items: center; gap: 12px; padding: 13px 22px;
  border: 1px solid var(--tsm-gold); border-radius: 999px; background: var(--tsm-gold);
  color: #152637; text-decoration: none; font-weight: 700; font-size: 14px;
  transition: transform .2s ease, background .2s ease;
}
.tsm-btn:hover { transform: translateY(-2px); background: #e2b23a; }
.tsm-btn--ghost { background: transparent; color: var(--tsm-navy); }
.tsm-section--dark .tsm-btn--ghost { color: #fff; border-color: rgba(255,255,255,.5); }
.tsm-arrow { font-size: 1.15em; line-height: 1; }

/* Header */
.tsm-header-wrap { position: relative; z-index: 40; background: rgba(251,249,245,.94); border-bottom: 1px solid rgba(46,64,82,.09); backdrop-filter: blur(12px); }
.tsm-header { min-height: 86px; display: grid; grid-template-columns: minmax(230px, 1fr) auto auto; align-items: center; gap: 34px; }
.tsm-brand { display: inline-flex; flex-direction: column; width: max-content; color: var(--tsm-ink); text-decoration: none; }
.tsm-brand__main { font-family: var(--tsm-serif); font-size: 27px; line-height: .9; letter-spacing: -.025em; }
.tsm-brand__sub { margin-top: 5px; padding-left: 56px; font-family: var(--tsm-serif); font-size: 20px; line-height: 1; position: relative; }
.tsm-brand__sub::before { content:""; position:absolute; left:0; top:50%; width:44px; height:2px; background:var(--tsm-gold); }
.tsm-brand__sub em { color: var(--tsm-teal); font-style: normal; }
.tsm-nav { display: flex; gap: 30px; align-items: center; }
.tsm-nav a { position: relative; color: var(--tsm-navy); text-decoration: none; font-size: 13px; font-weight: 600; }
.tsm-nav a:hover::after { content:""; position:absolute; left:0; right:0; bottom:-7px; height:2px; background:var(--tsm-gold); }
.tsm-mobile-menu { display:none; }

/* Hero */
.tsm-hero { position: relative; overflow: hidden; padding: clamp(64px, 8vw, 115px) 0 0; }
.tsm-hero__grid { display: grid; grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr); align-items: end; min-height: 620px; }
.tsm-hero__copy { position: relative; z-index: 3; padding: 0 36px 68px 0; }
.tsm-hero__title { max-width: 620px; margin-bottom: 26px; font-size: clamp(4.1rem, 8.1vw, 7.9rem); }
.tsm-hero__sub { max-width: 580px; font-family: var(--tsm-serif); font-size: clamp(2rem, 3.35vw, 3.8rem); line-height: 1.02; color: var(--tsm-ink); margin-bottom: 18px; }
.tsm-hero__copy p { max-width: 600px; }
.tsm-hero__visual { position: relative; align-self: stretch; min-height: 560px; }
.tsm-hero__visual img { width: 100%; height: 100%; min-height: 560px; object-fit: cover; border-radius: 0 0 0 150px; }
.tsm-hero__visual::before { content:"?"; position:absolute; z-index:2; left:-145px; top:-60px; font-family:var(--tsm-serif); font-size:390px; line-height:1; color:rgba(244,237,237,.77); transform:rotate(-7deg); pointer-events:none; }
.tsm-hero__visual::after { content:""; position:absolute; right:-7%; bottom:-90px; width:300px; height:190px; border-radius:60% 0 0 0; background:var(--tsm-teal); opacity:.95; }
.tsm-hero__gold { position:absolute; z-index:2; right:110px; bottom:-66px; width:260px; height:145px; background:var(--tsm-gold); border-radius:100% 100% 0 0; opacity:.88; }

/* Cards */
.tsm-grid { display: grid; gap: 34px; }
.tsm-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tsm-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tsm-card { min-width: 0; }
.tsm-card__image { overflow: hidden; aspect-ratio: 4/3; margin-bottom: 24px; background: var(--tsm-snow); }
.tsm-card__image img { width:100%; height:100%; object-fit:cover; }
.tsm-card:nth-child(1) .tsm-card__image { border-radius: 90px 0 0 0; }
.tsm-card:nth-child(2) .tsm-card__image { border-radius: 0 0 90px 0; }
.tsm-card:nth-child(3) .tsm-card__image { border-radius: 0 90px 0 0; }
.tsm-card h3 { font-size: clamp(1.75rem, 2.6vw, 2.75rem); }
.tsm-card p { color: rgba(46,64,82,.82); }
.tsm-link { display:inline-flex; align-items:center; gap:10px; padding-bottom:4px; border-bottom:2px solid var(--tsm-gold); text-decoration:none; font-weight:700; font-size:14px; }
.tsm-link:hover { color:var(--tsm-teal); }

.tsm-quote { position:relative; overflow:hidden; text-align:center; padding:58px 24px; background:var(--tsm-snow); }
.tsm-quote::before { content:""; position:absolute; inset:0; background:linear-gradient(rgba(251,249,245,.82),rgba(251,249,245,.82)), var(--tsm-quote-bg) center/cover; }
.tsm-quote blockquote { position:relative; z-index:1; max-width:980px; margin:0 auto; font-family:var(--tsm-serif); font-size:clamp(2rem,4vw,4rem); line-height:1.05; color:var(--tsm-ink); }
.tsm-quote blockquote::after { content:""; display:block; width:62px; height:3px; margin:26px auto 0; background:var(--tsm-gold); }

/* Split and identity */
.tsm-split { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:70px; align-items:center; }
.tsm-split--reverse { grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); }
.tsm-photo { position:relative; overflow:hidden; min-height:420px; border-radius:0 130px 0 0; }
.tsm-photo img { width:100%; height:100%; position:absolute; inset:0; object-fit:cover; }
.tsm-eye { width:min(260px,60%); aspect-ratio:1; margin:0 auto 24px; border-radius:50%; background:var(--tsm-ink); position:relative; overflow:hidden; }
.tsm-eye::before { content:""; position:absolute; width:115%; height:55%; left:-7%; bottom:7%; border-radius:0 0 50% 50%; background:var(--tsm-paper); transform:rotate(-8deg); }
.tsm-eye::after { content:""; position:absolute; width:58px; height:58px; border:20px solid var(--tsm-gold); background:var(--tsm-ink); border-radius:50%; left:50%; top:48%; transform:translate(-50%,-50%); }
.tsm-wave { position:absolute; z-index:3; width:68%; height:42px; left:1%; bottom:25%; background:var(--tsm-teal); border-radius:50%; transform:rotate(7deg); }

.tsm-work { display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:stretch; }
.tsm-work__media { min-height:360px; overflow:hidden; position:relative; }
.tsm-work__media img { width:100%; height:100%; object-fit:cover; }
.tsm-work__content { padding:30px 18px 30px 10px; display:flex; flex-direction:column; justify-content:center; }

.tsm-audience { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(220px,.55fr); gap:40px; align-items:center; }
.tsm-audience__list { color:rgba(46,64,82,.82); }
.tsm-audience__image { overflow:hidden; border-radius:90px 0 0 90px; aspect-ratio: 2/1; }
.tsm-audience__image img { width:100%; height:100%; object-fit:cover; }

.tsm-cta { min-height:440px; display:grid; align-items:center; background-position:center; background-size:cover; position:relative; }
.tsm-cta::before { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(18,39,54,.96) 0%,rgba(18,39,54,.82) 46%,rgba(18,39,54,.34) 100%); }
.tsm-cta__content { position:relative; z-index:2; max-width:690px; padding-block:72px; }
.tsm-cta__content h2 { font-size:clamp(3rem,6vw,6rem); }

/* Interior pages */
.tsm-page-hero { padding:clamp(70px,8vw,120px) 0 clamp(56px,6vw,96px); position:relative; overflow:hidden; }
.tsm-page-hero::after { content:"?"; position:absolute; right:6%; top:-60px; font-family:var(--tsm-serif); font-size:330px; color:rgba(244,237,237,.9); transform:rotate(-7deg); z-index:-1; }
.tsm-page-hero h1 { max-width:930px; }
.tsm-page-hero .tsm-lead { max-width:800px; }
.tsm-content-grid { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:80px; }
.tsm-sticky-title { align-self:start; position:sticky; top:120px; }
.tsm-prose h2 { margin-top:1.35em; }
.tsm-prose h3 { margin-top:1.25em; }
.tsm-prose ul { padding-left:1.25rem; }
.tsm-highlight { margin:34px 0; padding:32px; border-left:4px solid var(--tsm-gold); background:rgba(244,237,237,.58); font-family:var(--tsm-serif); font-size:clamp(1.5rem,2.4vw,2.5rem); line-height:1.2; }
.tsm-info-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.tsm-info-card { padding:28px; border:1px solid var(--tsm-line); background:rgba(255,255,255,.45); }
.tsm-info-card h3 { font-size:1.75rem; }
.tsm-meta { display:flex; flex-wrap:wrap; gap:10px 20px; margin:24px 0; font-weight:700; font-size:14px; }
.tsm-meta span { padding:7px 12px; background:var(--tsm-snow); border-radius:999px; }

/* Contact */
.tsm-contact-grid { display:grid; grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr); gap:72px; align-items:start; }
.tsm-contact-list { display:grid; gap:12px; }
.tsm-contact-list a { text-decoration:none; }
.tsm-form { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.tsm-field { display:grid; gap:7px; }
.tsm-field--full { grid-column:1 / -1; }
.tsm-field label { font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.tsm-field input, .tsm-field select, .tsm-field textarea {
  width:100%; box-sizing:border-box; border:1px solid rgba(46,64,82,.24); border-radius:0;
  background:#fff; color:var(--tsm-ink); padding:14px 15px; font-size:16px;
}
.tsm-field textarea { min-height:170px; resize:vertical; }
.tsm-form__status { grid-column:1/-1; padding:14px 16px; background:rgba(57,162,175,.13); border-left:3px solid var(--tsm-teal); }
.tsm-hp { position:absolute !important; left:-9999px !important; }

/* Footer */
.tsm-footer-wrap { border-top:1px solid var(--tsm-line); background:var(--tsm-paper); }
.tsm-footer { display:grid; grid-template-columns:1.2fr 1.6fr 1fr; gap:42px; align-items:center; min-height:150px; }
.tsm-footer__meta { display:flex; gap:18px; flex-wrap:wrap; font-size:13px; }
.tsm-footer__meta a { text-decoration:none; }
.tsm-footer__legal { display:flex; gap:14px; justify-content:flex-end; flex-wrap:wrap; font-size:11px; opacity:.72; }

/* Elementor reset for generated pages/templates */
.elementor-page .elementor-widget-html, .elementor-page .elementor-widget-shortcode { width:100%; }
.elementor-page .elementor-widget-html > .elementor-widget-container { width:100%; }
.elementor-page .tsm-page-root { width:100%; max-width:none; }

@media (max-width: 1024px) {
  .tsm-shell { width:min(calc(100% - 36px), var(--tsm-container)); }
  .tsm-header { grid-template-columns:1fr auto; min-height:78px; }
  .tsm-nav, .tsm-header > .tsm-btn { display:none; }
  .tsm-mobile-menu { display:block; position:relative; }
  .tsm-mobile-menu summary { cursor:pointer; list-style:none; font-weight:700; }
  .tsm-mobile-menu summary::-webkit-details-marker { display:none; }
  .tsm-mobile-menu[open] .tsm-mobile-menu__panel { display:grid; }
  .tsm-mobile-menu__panel { display:none; position:absolute; right:0; top:38px; min-width:260px; padding:18px; gap:14px; background:#fff; border:1px solid var(--tsm-line); box-shadow:0 16px 42px rgba(23,44,61,.12); }
  .tsm-mobile-menu__panel a { text-decoration:none; font-weight:700; }
  .tsm-hero__grid, .tsm-split, .tsm-split--reverse, .tsm-content-grid, .tsm-contact-grid { grid-template-columns:1fr; }
  .tsm-hero__grid { min-height:0; }
  .tsm-hero__copy { padding:0 0 52px; }
  .tsm-hero__visual { min-height:450px; }
  .tsm-hero__visual img { min-height:450px; border-radius:0 0 0 110px; }
  .tsm-hero__visual::before { left:auto; right:48%; top:-85px; font-size:300px; }
  .tsm-grid--3 { grid-template-columns:1fr 1fr; }
  .tsm-audience { grid-template-columns:1fr 1fr; }
  .tsm-audience__image { grid-column:1/-1; }
  .tsm-sticky-title { position:static; }
  .tsm-footer { grid-template-columns:1fr 1fr; padding-block:28px; }
  .tsm-footer__legal { grid-column:1/-1; justify-content:flex-start; }
}

@media (max-width: 767px) {
  :root { --tsm-section-y: 58px; }
  .tsm-shell { width:min(calc(100% - 28px), var(--tsm-container)); }
  .tsm-brand__main { font-size:22px; }
  .tsm-brand__sub { font-size:17px; padding-left:44px; }
  .tsm-brand__sub::before { width:34px; }
  .tsm-hero { padding-top:48px; }
  .tsm-hero__title { font-size:clamp(3.7rem,18vw,5.5rem); }
  .tsm-hero__visual, .tsm-hero__visual img { min-height:390px; }
  .tsm-grid--3, .tsm-grid--2, .tsm-info-grid, .tsm-audience, .tsm-work, .tsm-form, .tsm-footer { grid-template-columns:1fr; }
  .tsm-work__content { padding:10px 0 28px; }
  .tsm-field--full { grid-column:auto; }
  .tsm-footer__legal { grid-column:auto; }
  .tsm-photo { min-height:340px; }
  .tsm-cta::before { background:rgba(18,39,54,.84); }
}
