/* Component classes, lifted from the approved homepage (src/index.css) with a tp- prefix. Values are verbatim. */
.tp-root{color:var(--navy);font-family:var(--sans);-webkit-font-smoothing:antialiased}
.tp-root *,.tp-root *::before,.tp-root *::after{box-sizing:border-box}
.tp-root a:not(.tp-button){color:inherit;text-decoration:none}
.tp-root a.tp-button{text-decoration:none}
.tp-root img{display:block;max-width:100%}
.tp-root :is(button,a):focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px}
.tp-container{width:var(--container);margin-inline:auto}
.tp-section{position:relative;background:var(--surface-section)}.tp-section--alt{background:var(--surface-section-alt)}

.tp-eyebrow{margin:0 0 20px;color:var(--teal-dark);font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;font-family:var(--sans)}
.tp-section-heading{max-width:700px}
.tp-section-heading h2{margin:0;font-family:var(--serif);font-size:clamp(42px,4.5vw,66px);font-weight:400;line-height:.98;letter-spacing:-.035em}
.tp-section-heading--center{text-align:center;margin-inline:auto}
.tp-section-copy{margin:28px 0 0;color:var(--ink-muted);font-size:17px;line-height:1.75;max-width:640px}
.tp-section-heading--center .tp-section-copy{margin-inline:auto}
.tp-section-heading--light h2{color:#fff}
.tp-section-heading--light .tp-section-copy{color:color-mix(in srgb,var(--white) 74%,var(--navy))}

.tp-button{white-space:nowrap;display:inline-flex;min-height:52px;align-items:center;justify-content:center;gap:28px;padding:0 22px;border:1px solid transparent;border-radius:2px;background:none;font-family:var(--sans);font-size:14px;font-weight:700;color:inherit;cursor:pointer;transition:.25s ease;text-decoration:none}
.tp-button svg{transition:transform .25s ease}
.tp-button:hover svg{transform:translateX(4px)}
.tp-button--sm{min-height:50px;gap:16px;padding-inline:19px;font-size:13px}
.tp-button--primary,.tp-button--primary:hover{color:#fff}
.tp-button--primary{background:var(--teal-dark)}
.tp-button--primary:hover{background:var(--navy)}
.tp-button--light{color:var(--navy);background:#fff}
.tp-button--light:hover{color:var(--navy);background:var(--teal)}
.tp-button--outline{border-color:var(--navy);color:var(--navy)}
.tp-button--outline:hover{color:#fff;background:var(--navy)}
.tp-button--text{padding-inline:0;border-bottom-color:transparent}
.tp-button--text:hover{color:var(--teal-dark);border-bottom-color:var(--teal-dark)}
.tp-button:disabled{opacity:.45;cursor:not-allowed}

.tp-icon-button{flex-shrink:0;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);background:var(--white);color:var(--navy);cursor:pointer;padding:0}
.tp-icon-button--round{width:48px;height:48px;border-radius:50%}
.tp-icon-button--filled{color:var(--white);background:var(--teal-dark);border-color:var(--teal-dark)}
.tp-icon-button--round:hover:not(:disabled){background:var(--navy);border-color:var(--navy);color:var(--white)}
.tp-icon-button:disabled{opacity:.4;cursor:not-allowed}
.tp-icon-button--social{width:30px;height:30px;border:1px solid color-mix(in srgb,var(--white) 32%,transparent);border-radius:50%;color:var(--white);background:transparent}
.tp-icon-button--social:hover{border-color:var(--teal);background:var(--teal);color:var(--navy)}

.tp-field{min-width:0;display:block;font-size:12px;font-weight:600;font-family:var(--sans);color:var(--navy)}
.tp-field>span{font-weight:400;color:var(--ink-muted)}
.tp-field :is(select,input){display:block;width:100%;height:48px;margin-top:9px;padding:0 12px;border:1px solid var(--line);border-radius:0;background:var(--white);color:var(--navy);font-family:var(--sans);font-size:13px}
.tp-field select{cursor:pointer}
.tp-field input::placeholder{color:var(--ink-muted)}
.tp-field :is(select,input):focus-visible{outline:2px solid var(--teal-dark);outline-offset:3px}

.tp-finder{position:relative;padding:27px 32px 30px;background:var(--white);border-top:3px solid var(--teal-dark);box-shadow:0 12px 36px rgb(18 40 59 / 9%)}
.tp-finder h2{margin:0 0 22px;font-family:var(--sans);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.15em}
.tp-finder-fields{display:grid;grid-template-columns:1fr 1.5fr auto;gap:20px;align-items:end}
.tp-finder .tp-button{min-height:48px;gap:18px;white-space:nowrap;font-size:13px}
@media (max-width:800px){.tp-finder-fields{grid-template-columns:1fr 1fr}}

.tp-filter-row{margin:28px 0 14px;display:flex;gap:26px;border-bottom:1px solid var(--line)}
.tp-filter-row button{position:relative;padding:8px 0 12px;flex-shrink:0;border:0;background:none;color:var(--ink-muted);font-family:var(--sans);font-size:13px;font-weight:600;cursor:pointer}
.tp-filter-row button::after{content:"";position:absolute;inset:auto 0 -1px;height:2px;background:var(--teal);transform:scaleX(0);transition:.2s}
.tp-filter-row button[aria-pressed="true"]{color:var(--navy)}
.tp-filter-row button[aria-pressed="true"]::after{transform:scaleX(1)}

.tp-toggle{display:inline-flex;gap:4px;padding:5px;border:1px solid var(--line);background:var(--mist);border-radius:5px}
.tp-toggle button{min-height:45px;padding:0 27px;border:0;border-radius:3px;color:var(--ink-muted);background:transparent;font-family:var(--sans);font-size:13px;font-weight:600;cursor:pointer;transition:color .2s,background .2s,box-shadow .2s}
.tp-toggle button[aria-selected="true"]{color:var(--white);background:var(--teal-dark);box-shadow:0 2px 5px color-mix(in srgb,var(--navy) 8%,transparent)}
.tp-toggle button:not([aria-selected="true"]):hover{color:var(--navy);background:var(--white)}

.tp-chip{display:inline-flex;align-items:center;gap:8px;border:0;background:var(--mist);padding:10px 14px;cursor:pointer;font-family:var(--sans);font-size:13px;color:var(--navy)}
.tp-label-tag{display:inline-block;padding:7px 9px;color:#fff;background:var(--teal-dark);font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.tp-label-tag--light{color:var(--navy);background:var(--white);font-weight:600}

.tp-header{position:relative;border-bottom:1px solid transparent;transition:.3s ease;background:transparent}
.tp-header--scrolled{border-color:rgba(18,40,59,.1);background:rgba(255,255,255,.94);backdrop-filter:blur(12px);box-shadow:0 4px 28px rgba(11,30,47,.05)}
.tp-header--fixed{position:fixed;inset:0 0 auto;z-index:50}
.tp-header-inner{width:var(--container);height:96px;margin:auto;display:flex;align-items:center;justify-content:space-between;transition:height .3s ease}
.tp-header--scrolled .tp-header-inner{height:76px}
.tp-brand{width:152px;min-width:152px;height:64px;padding:6px;display:flex;align-items:center}
.tp-brand img{width:100%;height:auto;object-fit:contain}
.tp-nav{display:flex;align-items:center;gap:clamp(14px,1.7vw,28px);margin-left:auto;margin-right:clamp(14px,2vw,30px)}
.tp-nav>a,.tp-nav-dropdown>a{position:relative;display:flex;align-items:center;gap:4px;padding:36px 0;font-size:13px;font-weight:600;white-space:nowrap}
.tp-nav>a::after,.tp-nav-dropdown>a::after{content:"";position:absolute;inset:auto 0 27px;height:1px;background:var(--teal);transform:scaleX(0);transform-origin:left;transition:transform .2s}
.tp-nav a:hover::after,.tp-nav a[aria-current="page"]::after,.tp-nav-dropdown:focus-within>a::after{transform:scaleX(1)}
.tp-nav-dropdown{position:relative}
.tp-dropdown-panel{position:absolute;z-index:5;top:77px;left:-24px;width:230px;padding:20px 22px;background:#fff;border-top:2px solid var(--teal);box-shadow:0 18px 50px rgba(11,30,47,.15);opacity:0;visibility:hidden;transform:translateY(-8px);transition:.2s ease}
.tp-nav-dropdown:hover .tp-dropdown-panel,.tp-nav-dropdown:focus-within .tp-dropdown-panel{opacity:1;visibility:visible;transform:none}
.tp-dropdown-panel span{display:block;margin-bottom:12px;color:var(--teal-dark);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.tp-dropdown-panel a{display:block;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
.tp-menu-toggle{display:none;padding:8px;border:0;background:none;cursor:pointer;color:inherit}
@media (max-width:1120px){.tp-nav{display:none}.tp-menu-toggle{display:block}}

.tp-book-card{flex:0 0 248px;width:248px}
.tp-book-cover{position:relative;width:100%;border:0;cursor:pointer;height:302px;padding:18px 24px 29px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:color-mix(in srgb,var(--mist) 65%,var(--white))}
.tp-book-cover::before{content:"";position:absolute;inset:auto 0 0;height:46px;background:var(--navy);opacity:0;transition:.3s;z-index:2}
.tp-book-cover img{max-height:254px;max-width:100%;width:auto;object-fit:contain;box-shadow:4px 7px 12px color-mix(in srgb,var(--navy) 13%,transparent);transition:transform .35s ease,box-shadow .35s ease}
.tp-book-cover>span{position:absolute;bottom:15px;z-index:3;display:flex;gap:18px;align-items:center;color:#fff;font-family:var(--sans);font-size:12px;font-weight:700;opacity:0;transform:translateY(8px);transition:.3s}
.tp-book-cover:is(:hover,:focus-visible)::before,.tp-book-cover:is(:hover,:focus-visible)>span{opacity:1;transform:none}
.tp-book-cover:is(:hover,:focus-visible) img{transform:translateY(-6px);box-shadow:6px 13px 18px color-mix(in srgb,var(--navy) 20%,transparent)}
.tp-meta{margin-top:14px;display:flex;gap:14px;color:var(--teal-dark);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.tp-meta span+span::before{content:"•";margin-right:14px;color:var(--cyan)}
.tp-book-card h3{margin:10px 0 5px;font-family:var(--serif);font-size:21px;font-weight:400;line-height:1.2}
.tp-book-card>p{margin:0;color:var(--ink-muted);font-size:12px}

.tp-feature{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border-radius:3px;background:color-mix(in srgb,var(--teal) 13%,var(--white))}
.tp-feature--light{background:color-mix(in srgb,var(--cyan) 12%,var(--white))}
.tp-feature-media{height:260px;position:relative;overflow:hidden}
.tp-feature-media>img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.tp-feature:hover .tp-feature-media>img{transform:scale(1.035)}
.tp-feature-copy{padding:24px;display:flex;flex:1;flex-direction:column;align-items:start}
.tp-kicker{font-size:9px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-dark)}
.tp-feature h3{margin:9px 0 12px;font:400 32px/1.05 var(--serif);letter-spacing:-.02em}
.tp-feature-copy>p{margin:0 0 18px;font-size:14px;line-height:1.6;color:var(--ink-muted)}
.tp-action-row{width:100%;margin-top:auto;padding-top:14px;display:flex;justify-content:space-between;align-items:center;gap:16px;border:0;border-top:1px solid color-mix(in srgb,var(--navy) 14%,transparent);background:none;color:var(--navy);font-family:var(--sans);font-size:12px;font-weight:700;min-height:44px;cursor:pointer}
.tp-action-row svg{flex-shrink:0;transition:transform .25s ease}
.tp-feature:hover .tp-action-row svg,.tp-event:hover .tp-action-row svg,.tp-action-row:hover svg{transform:translateX(5px)}

.tp-event{position:relative;display:grid;grid-template-columns:1.05fr 1fr;min-height:430px;background:var(--white);border:1px solid var(--line);border-radius:3px;overflow:hidden;box-shadow:0 10px 32px color-mix(in srgb,var(--navy) 9%,transparent)}
.tp-event--reverse .tp-event-image{order:2}
.tp-event--tint .tp-event-copy{background:color-mix(in srgb,var(--teal) 5%,var(--white))}
.tp-event-image{position:relative;min-height:430px;overflow:hidden}
.tp-event-image>img{width:100%;height:100%;position:absolute;object-fit:cover;object-position:center 40%}
.tp-event-copy{position:relative;padding:38px 42px 32px;display:flex;flex-direction:column;align-items:start}
.tp-event-category{width:100%;display:flex;justify-content:space-between;gap:20px;color:var(--teal-dark);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em}
.tp-event-category span:last-child{color:var(--ink-muted);font-size:9px}
.tp-event-copy h3{max-width:420px;margin:30px 0 18px;font:400 clamp(30px,3vw,42px)/1.06 var(--serif);letter-spacing:-.02em}
.tp-event-copy>p{max-width:420px;margin:0 0 23px;font-size:14px;line-height:1.7;color:var(--ink-muted)}
.tp-event-location{margin-bottom:26px;color:var(--teal-dark);font-size:11px}
@media (max-width:800px){.tp-event{grid-template-columns:1fr;min-height:0}.tp-event-image{min-height:180px}.tp-event--reverse .tp-event-image{order:0}.tp-event-copy{padding:24px}}

.tp-news{display:flex;flex-direction:column;min-width:0}
.tp-news-image{position:relative;height:280px;overflow:hidden;background:var(--mist);flex-shrink:0}
.tp-news-image img{width:100%;height:100%;object-fit:cover;transition:.5s}
.tp-news:hover .tp-news-image img{transform:scale(1.035)}
.tp-news-image>.tp-label-tag{position:absolute;top:14px;left:14px}
.tp-news-type{margin:20px 0 10px;color:var(--teal-dark);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.tp-news h3{margin:0 0 20px;font-family:var(--serif);font-size:25px;font-weight:400;line-height:1.2}
.tp-news-excerpt{margin:-6px 0 20px;color:var(--ink-muted);font-size:14px;line-height:1.7}
.tp-read-link{display:flex;align-items:center;gap:12px;color:var(--ink-muted);font-size:12px;margin-top:auto;min-height:36px}

.tp-partner{position:relative;isolation:isolate;min-height:170px;overflow:hidden;padding:26px 30px;display:grid;grid-template-columns:118px minmax(0,1fr);align-items:center;gap:26px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--cream) 48%,var(--white));box-shadow:0 12px 26px -24px color-mix(in srgb,var(--navy) 58%,transparent)}
.tp-partner-deco{position:absolute;z-index:0;inset:0;width:100%;height:100%;opacity:.5;pointer-events:none}
.tp-partner img{position:relative;z-index:1;width:118px;max-height:82px;object-fit:contain}
.tp-partner>div{position:relative;z-index:1}
.tp-partner h3{margin:0 0 10px;color:var(--navy);font:400 23px/1.1 var(--serif)}
.tp-partner p{margin:0;color:var(--ink-muted);font-size:12px}

.tp-modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:rgb(11 30 47 / 72%)}
.tp-modal-backdrop--inline{position:absolute}
.tp-modal{width:min(820px,calc(100% - 32px));max-height:85dvh;overflow:auto;border:0;padding:32px;color:var(--navy);background:var(--white);font-family:var(--sans)}
.tp-modal-heading{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:30px}
.tp-modal-heading h2{margin:0;font:400 clamp(27px,4vw,38px)/1.1 var(--serif)}
.tp-modal dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:14px}
.tp-modal dt{color:var(--ink-muted)}.tp-modal dd{margin:0}
.tp-modal p{color:var(--ink-muted);font-size:14px;line-height:1.7}

.tp-footer{padding:82px 0 30px;color:color-mix(in srgb,var(--white) 78%,var(--navy));background:var(--navy-2);font-family:var(--sans)}
.tp-footer-grid{display:grid;grid-template-columns:1.5fr repeat(2,1fr);gap:10%;padding-bottom:65px}
.tp-footer-brand img{width:220px;height:auto}
.tp-footer-brand p{max-width:310px;margin:25px 0 0;color:color-mix(in srgb,var(--white) 68%,var(--navy));font-size:13px;line-height:1.7}
.tp-social{display:flex;align-items:center;gap:10px;margin-top:20px}
.tp-footer-grid h3{margin:0 0 22px;color:#fff;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.tp-footer-grid>div:not(:first-child) a{display:block;margin:0 0 13px;color:color-mix(in srgb,var(--white) 68%,var(--navy));font-size:12px;line-height:1.5}
.tp-footer-grid a:hover{color:var(--teal)}
.tp-footer-bottom{padding-top:26px;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;gap:20px;color:color-mix(in srgb,var(--white) 53%,var(--navy));font-size:10px}
.tp-footer-bottom p{margin:0}
.tp-footer-bottom div{display:flex;gap:26px}
.tp-footer-bottom a:hover{color:var(--teal)}
@media (max-width:800px){.tp-footer-grid{grid-template-columns:1fr;gap:32px}.tp-footer-bottom{display:block}}
/* Footer readability: larger type, stronger contrast */
.tp-footer-brand p{max-width:340px;color:color-mix(in srgb,var(--white) 88%,var(--navy));font-size:15px;line-height:1.65}
.tp-footer-grid h3{font-size:13px}
.tp-footer-grid>div:not(:first-child) a{color:color-mix(in srgb,var(--white) 88%,var(--navy));font-size:14px;line-height:1.6}
.tp-footer-bottom{color:color-mix(in srgb,var(--white) 76%,var(--navy));font-size:12.5px}

.tp-waves{display:block;width:100%;height:115px;pointer-events:none}

/* Design Valley credit — sits after the copyright line */
.tp-credit{display:inline-flex;align-items:center;gap:8px;margin-left:14px;padding-left:14px;border-left:1px solid rgba(255,255,255,.18);color:inherit!important;text-decoration:none!important;vertical-align:middle;opacity:.85;transition:opacity .15s ease}
.tp-credit:hover{opacity:1}
.tp-credit img{display:block;width:auto;height:22px}
.tp-credit:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
@media (max-width:800px){.tp-credit{display:flex;width:max-content;margin:12px 0 0;padding:0;border:0}}