/*
Theme Name: Thriveable Metro Transit Map V3
Theme URI: https://thriveable.net/
Author: Thriveable
Description: Premium Business/Startup portal using strict 0°, 45° and 90° metro-map route geometry, station nodes, interchanges and fixed category route colors.
Version: 3.0.0
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Text Domain: thriveable
*/
:root{
 --red:#E4222B;
 --blue:#0057B8;
 --green:#009E4F;
 --orange:#F28C00;
 --purple:#7A28A0;
 --off:#F7F5F0;
 --black:#111418;
 --muted:#5A626B;
 --wrap:1260px;
 --font:Inter,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--off);color:var(--black);font-family:var(--font);overflow-x:clip}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
button,input{font:inherit}
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:clip;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.tv-skip{position:absolute;left:12px;top:8px;z-index:9999;background:var(--blue);color:#fff;padding:10px 14px;transform:translateY(-180%)}
.tv-skip:focus{transform:none}

/* Header */
.tv-header{background:#fff;border-bottom:2px solid var(--black)}
.tv-head{max-width:var(--wrap);min-height:88px;margin:auto;padding:0 22px;display:grid;grid-template-columns:255px minmax(0,1fr) 242px;gap:22px;align-items:center}
.tv-brand img{width:238px;height:48px;object-fit:contain;object-position:left center}
.tv-nav ul{display:flex;justify-content:center;align-items:center;gap:3px;list-style:none;margin:0;padding:0}
.tv-nav a{display:flex;align-items:center;min-height:42px;padding:0 9px;font-size:12px;font-weight:800;white-space:nowrap;border-bottom:4px solid transparent}
.tv-nav a:hover,.tv-nav .current-menu-item>a{color:var(--blue);border-color:var(--blue)}
.tv-search{height:44px;display:grid;grid-template-columns:1fr 44px;border:2px solid var(--black);background:#fff}
.tv-search input{min-width:0;border:0;padding:0 12px;outline:0;background:#fff;color:var(--black)}
.tv-search button{border:0;border-left:2px solid var(--black);background:var(--blue);color:#fff;font-weight:900}
.tv-trust{border-top:1px solid #D9D7D1}
.tv-trust-inner{max-width:var(--wrap);margin:auto;padding:8px 22px;text-align:center;font-size:10.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:#626970}

.tv-main{max-width:var(--wrap);margin:auto;padding:34px 22px 96px;position:relative}
.tv-kicker{font-size:10.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--red)}
.tv-section-head{display:grid;grid-template-columns:.82fr 1.18fr;gap:52px;align-items:end;margin-bottom:34px}
.tv-section-head h2{font-size:48px;line-height:.94;letter-spacing:-.042em;margin:6px 0 0;font-weight:700}
.tv-section-head p,.tv-section-head>a{margin:0;color:var(--muted);line-height:1.65}
.tv-section-head>a{justify-self:end;color:var(--blue);font-weight:800}

/* Nodes */
.tv-node,.tv-map-node,.tv-pillar-station{border-radius:50%;background:#fff;position:absolute;z-index:5}
.tv-node{width:24px;height:24px;border:6px solid currentColor}
.tv-node.small{width:18px;height:18px;border-width:5px}
.tv-node.interchange{width:42px;height:42px;border:7px solid var(--black);background:#fff;box-shadow:0 0 0 7px #fff,0 0 0 12px var(--blue)}
.tv-map-node{width:20px;height:20px;border:5px solid currentColor}
.tv-map-node.red-node{color:var(--red)}.tv-map-node.blue-node{color:var(--blue)}.tv-map-node.green-node{color:var(--green)}

/* Hero: strict route geometry */
.tv-hero{
 position:relative;min-height:690px;background:var(--off);overflow:hidden;
 display:grid;grid-template-columns:minmax(0,1.02fr) minmax(430px,.98fr);gap:58px;align-items:center;
 padding:64px 38px;border:2px solid rgba(17,20,24,.10)
}
.tv-hero-routes{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.tv-route{position:absolute;display:block;height:14px;transform-origin:left center}
.tv-route.red{background:var(--red)}.tv-route.blue{background:var(--blue)}.tv-route.green{background:var(--green)}
.tv-route.r1{width:470px;left:-92px;top:92px;transform:rotate(45deg)}
.tv-route.r2{width:410px;left:240px;top:424px;transform:rotate(0deg)}
.tv-route.b1{width:620px;left:160px;top:2px;transform:rotate(45deg)}
.tv-route.b2{width:340px;left:598px;top:440px;transform:rotate(90deg)}
.tv-route.g1{width:530px;right:-210px;top:66px;transform:rotate(45deg)}
.tv-route.g2{width:360px;right:54px;top:432px;transform:rotate(0deg)}
.tv-map-node.n1{left:430px;top:414px}
.tv-map-node.n2{left:589px;top:430px}
.tv-map-node.n3{right:342px;top:422px}

.tv-hero-copy,.tv-hero-image{position:relative;z-index:3}
.tv-hero-copy{background:rgba(247,245,240,.94);padding:30px 32px 30px 0}
.tv-hero h1{font-size:58px;line-height:.93;letter-spacing:-.048em;margin:10px 0 19px;font-weight:700;max-width:690px}
.tv-hero p{font-size:18px;line-height:1.66;max-width:620px;margin:0 0 25px;color:#4F575E}
.tv-actions{display:flex;gap:12px;flex-wrap:wrap}
.tv-btn{min-height:48px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.tv-btn.blue{background:var(--blue);color:#fff}
.tv-btn.outline{border:2px solid var(--black);background:var(--off);color:var(--black)}
.tv-btn:hover{transform:translateY(-1px)}
.tv-hero-copy .tv-node.interchange{right:-26px;top:48%;transform:translateY(-50%)}
.tv-hero-image{background:#fff;border:2px solid var(--black);padding:10px}
.tv-hero-image img{width:100%;height:408px;object-fit:cover}
.tv-hero-image .tv-node{right:-12px;top:-12px;color:var(--red)}
.tv-hero-meta{display:flex;justify-content:space-between;gap:12px;padding:10px 2px 0;font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}

/* Stats route */
.tv-stats-wrap{margin:62px 0 86px}
.tv-route-strip{position:relative;padding-top:40px}
.tv-route-strip:before{content:"";position:absolute;left:7%;right:7%;top:18px;height:9px;background:var(--black)}
.tv-stats{display:grid;grid-template-columns:repeat(4,1fr)}
.tv-stat{position:relative;text-align:center;padding:26px 14px 0}
.tv-stat .tv-node{left:50%;top:-20px;transform:translateX(-50%);color:var(--black)}
.tv-stat strong{display:block;font-size:48px;line-height:.95;font-weight:700}
.tv-stat span{display:block;margin-top:8px;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#60676D}

/* Core pillars */
.tv-pillars-stage{position:relative;padding-top:52px;margin-bottom:82px}
.tv-pillar-track{position:absolute;left:3%;right:3%;top:30px;height:10px;display:grid;grid-template-columns:repeat(4,1fr);z-index:0}
.tv-pillar-track .track{height:10px}
.tv-pillar-track .red{background:var(--red)}.tv-pillar-track .blue{background:var(--blue)}.tv-pillar-track .green{background:var(--green)}.tv-pillar-track .orange{background:var(--orange)}
.tv-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;position:relative;z-index:2}
.tv-pillar{--route:var(--blue);position:relative;background:#fff;border:2px solid var(--black);padding:48px 24px 28px;min-height:292px}
.tv-pillar[data-route="red"]{--route:var(--red)}
.tv-pillar[data-route="blue"]{--route:var(--blue)}
.tv-pillar[data-route="green"]{--route:var(--green)}
.tv-pillar[data-route="orange"]{--route:var(--orange)}
.tv-pillar-station{left:50%;top:-35px;transform:translateX(-50%);width:26px;height:26px;border:6px solid var(--route)}
.tv-pillar-icon{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--route);color:#fff;font-size:20px;font-weight:800;margin-bottom:20px}
.tv-pillar[data-route="orange"] .tv-pillar-icon{color:var(--black)}
.tv-pillar h3{font-size:27px;line-height:1.04;margin:0 0 10px;font-weight:700}
.tv-pillar p{margin:0;color:#5D656C;line-height:1.55}

/* 0° -> 45° turn */
.tv-turn{height:120px;position:relative;overflow:hidden;margin:0 calc(50% - 50vw) 44px}
.tv-turn .seg-a,.tv-turn .seg-b{position:absolute;height:10px;background:var(--purple)}
.tv-turn .seg-a{width:44%;left:5%;top:54px;transform:rotate(0deg)}
.tv-turn .seg-b{width:290px;left:49%;top:54px;transform:rotate(45deg);transform-origin:left center}
.tv-turn .tv-node{left:49%;top:42px;color:var(--purple);transform:translateX(-50%)}

/* Resource cards */
.tv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 24px}
.tv-card{--route:var(--blue);position:relative;background:var(--off);border:2px solid var(--black);overflow:hidden;padding-left:6px}
.tv-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--route);transition:filter .18s ease}
.tv-card:after{content:"";position:absolute;left:-8px;top:54px;width:18px;height:18px;border-radius:50%;background:#fff;border:5px solid var(--route);transition:transform .18s ease}
.tv-card:hover:before{filter:brightness(.76)}
.tv-card:hover:after{transform:scale(1.28)}
.tv-media{padding:10px 10px 0}
.tv-media img{width:100%;height:224px;object-fit:cover}
.tv-card-body{padding:20px 20px 23px}
.tv-cat{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--route)}
.tv-card h3{font-size:24px;line-height:1.08;letter-spacing:-.03em;margin:8px 0 9px;font-weight:700}
.tv-card p{margin:0;color:#5F676D;line-height:1.52}
.tv-card-meta{margin-top:12px;font-size:11px;color:#777E83}

/* Statement — no gradients, only discrete route ends */
.tv-band-wrap{margin:88px calc(50% - 50vw) 60px}
.tv-band{position:relative;background:var(--black);color:var(--off);padding:70px max(24px,calc((100vw - var(--wrap))/2 + 22px));overflow:hidden}
.tv-band-grid{display:grid;grid-template-columns:.24fr 1.76fr;gap:42px;align-items:start;position:relative;z-index:2}
.tv-band-no{font-size:64px;line-height:.9;font-weight:700;color:var(--orange)}
.tv-band strong{display:block;font-size:49px;line-height:.99;letter-spacing:-.04em;font-weight:700;max-width:950px}
.tv-band span{display:block;margin-top:12px;max-width:770px;line-height:1.65;color:#CFD1D3}
.tv-route-ends{position:absolute;top:50%;transform:translateY(-50%);display:grid;gap:8px;z-index:1}
.tv-route-ends.left{left:0}.tv-route-ends.right{right:0}
.tv-route-ends i{display:block;width:170px;height:10px}
.tv-route-ends.right i{margin-left:auto}
.tv-route-ends .red{background:var(--red)}.tv-route-ends .blue{background:var(--blue)}.tv-route-ends .green{background:var(--green)}.tv-route-ends .orange{background:var(--orange)}.tv-route-ends .purple{background:var(--purple)}
.tv-older{display:flex;justify-content:center;margin-top:42px}
.tv-older a{min-height:48px;padding:0 20px;background:var(--blue);color:#fff;display:inline-flex;align-items:center;font-weight:800}

/* Article */
.tv-article-shell{background:var(--off);padding:48px 0 92px}
.tv-article{max-width:920px;margin:0 auto;padding:0 22px}
.tv-article-head,.tv-article-body{background:#fff;border:2px solid var(--black)}
.tv-article-head{padding:30px 32px;margin-bottom:18px}
.tv-breadcrumb{font-size:12px;color:var(--blue);margin-bottom:18px}
.tv-article h1{font-size:50px;line-height:1.02;letter-spacing:-.04em;margin:6px 0 14px;font-weight:700}
.tv-meta{font-size:13px;color:#6D747A;display:flex;gap:10px;flex-wrap:wrap}
.tv-article-body{padding:30px 32px}
.tv-article-hero{margin:0 0 30px;border:2px solid var(--black);padding:8px;background:#fff}
.tv-article-hero img{width:100%;height:470px;object-fit:cover}
.tv-keypoints{padding:18px 20px;border-left:6px solid var(--blue);background:#F2F4F6;margin-bottom:26px}
.tv-keypoints strong{display:block;color:var(--blue);margin-bottom:7px}
.entry-content{font-size:19px;line-height:1.8;color:var(--black)}
.entry-content p{margin:0 0 1.5em}
.entry-content h2{font-size:32px;letter-spacing:-.025em;margin:2.2em 0 .7em;font-weight:700}
.entry-content h3{font-size:26px;font-weight:700}
.entry-content a{color:var(--blue);text-decoration:underline;text-underline-offset:.14em}
.entry-content table{width:100%;border-collapse:collapse;font-size:16px}
.entry-content th,.entry-content td{padding:10px;border-bottom:1px solid #D5D8DA;text-align:left}
.entry-content .alignwide{width:min(1120px,calc(100vw - 48px));max-width:none;margin-left:50%;transform:translateX(-50%)}
.entry-content .alignfull{width:100%;max-width:100%}
.tv-inline-related{margin:28px 0;padding:18px 20px;background:#F2F4F6;border-left:6px solid var(--blue)}
.tv-inline-related-title{display:block;margin-bottom:10px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--blue)}
.tv-inline-related ol{list-style:none;margin:0;padding:0}
.tv-inline-related li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;padding:9px 0;border-top:1px solid #D6D9DB}
.tv-inline-related li:first-child{border-top:0}
.tv-link-no{font-size:11px;font-weight:800;color:var(--red)}
.tv-inline-related a{font-weight:700;text-decoration:none;overflow-wrap:anywhere}
.tv-author{display:grid;grid-template-columns:72px 1fr;gap:18px;padding:22px 0;margin-top:34px;border-top:2px solid var(--black)}
.tv-author img{width:72px;height:72px;object-fit:cover;border-radius:50%;border:3px solid var(--blue)}
.tv-related{margin-top:48px}.tv-related h2{font-size:34px;font-weight:700}
.tv-related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}

/* Lists */
.tv-list{max-width:1000px;margin:0 auto;padding:44px 22px 82px}
.tv-list h1{font-size:42px;font-weight:700}
.tv-row{border-top:2px solid var(--black);padding:18px 0}
.tv-row h2{font-size:24px;margin:0 0 6px;font-weight:700}
.tv-row p{margin:0;color:#5F676D}
.tv-row a:hover h2{color:var(--blue)}

/* Footer */
.tv-footer{background:var(--black);color:var(--off);padding:62px 0 30px}
.tv-foot{max-width:var(--wrap);margin:auto;padding:0 22px}
.tv-foot-top{display:grid;grid-template-columns:1fr 360px;gap:34px;align-items:end;padding-bottom:24px;border-bottom:1px solid rgba(247,245,240,.16)}
.tv-foot-brand img{width:245px;height:48px;object-fit:contain;object-position:left center}
.tv-foot-copy{max-width:640px;color:#D0D2D4;line-height:1.65;margin:14px 0 0}
.tv-legend{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.tv-legend i{height:10px}
.tv-legend i:nth-child(1){background:var(--red)}.tv-legend i:nth-child(2){background:var(--blue)}.tv-legend i:nth-child(3){background:var(--green)}.tv-legend i:nth-child(4){background:var(--orange)}.tv-legend i:nth-child(5){background:var(--purple)}
.tv-foot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding-top:26px}
.tv-foot-grid strong{display:block;color:var(--orange);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px}
.tv-foot-grid a{display:block;min-height:32px}
.tv-copy{margin-top:24px;padding-top:15px;border-top:1px solid rgba(247,245,240,.08);display:flex;justify-content:space-between;color:#A9AFB4;font-size:11px}

:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

@media(max-width:1100px){
 .tv-head{grid-template-columns:205px 1fr 205px;gap:12px}.tv-brand img{width:195px}.tv-nav a{padding:0 7px;font-size:10.9px}
 .tv-hero{grid-template-columns:1fr 1fr;gap:30px}
 .tv-pillars{grid-template-columns:1fr 1fr}.tv-pillar-track{display:none}
 .tv-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:820px){
 .tv-head{grid-template-columns:1fr 215px;padding-top:8px;padding-bottom:8px}
 .tv-nav{grid-column:1/-1}.tv-nav ul{justify-content:flex-start;flex-wrap:wrap}
 .tv-hero{grid-template-columns:1fr}.tv-hero h1{font-size:48px}
 .tv-stats{grid-template-columns:1fr 1fr}
 .tv-section-head{grid-template-columns:1fr;gap:12px}.tv-section-head>a{justify-self:start}
 .tv-pillars{grid-template-columns:1fr 1fr}
 .tv-band-grid{grid-template-columns:1fr}
 .tv-related-grid{grid-template-columns:1fr}
 .tv-foot-top{grid-template-columns:1fr}
}

/* Mobile route map -> one vertical spine */
@media(max-width:767px){
 .tv-main{padding-left:44px}
 .tv-main:before{content:"";position:absolute;left:18px;top:18px;bottom:0;width:8px;background:var(--blue);z-index:0}
 .tv-hero{padding:34px 18px 34px 26px;overflow:visible}
 .tv-hero-routes .tv-route,.tv-hero-routes .tv-map-node{display:none}
 .tv-hero-copy{padding:18px 0;background:transparent}
 .tv-hero-copy .tv-node.interchange{left:-50px;right:auto;top:26px;transform:none;width:30px;height:30px;border-width:5px;box-shadow:0 0 0 5px var(--off),0 0 0 9px var(--blue)}
 .tv-route-strip{padding-top:0}
 .tv-route-strip:before{left:-26px;right:auto;top:0;bottom:0;width:8px;height:auto}
 .tv-stats{grid-template-columns:1fr}
 .tv-stat{text-align:left;padding:18px 0 18px 30px}
 .tv-stat .tv-node{left:-26px;top:28px;transform:translateX(-50%)}
 .tv-pillars-stage{padding-top:0}
 .tv-pillar-track{display:none}
 .tv-pillars{grid-template-columns:1fr}
 .tv-pillar{margin-left:30px}
 .tv-pillar-station{left:-42px;top:34px;transform:none}
 .tv-turn{height:90px;margin-left:-44px}
 .tv-turn .seg-a{display:none}
 .tv-turn .seg-b{left:18px;top:0;width:8px;height:100%;transform:none}
 .tv-turn .tv-node{left:22px;top:32px}
 .tv-grid{grid-template-columns:1fr}
 .tv-route-ends{display:none}
}
@media(max-width:560px){
 .tv-head{grid-template-columns:1fr;padding-left:14px;padding-right:14px}.tv-search{width:100%}
 .tv-hero h1{font-size:40px}.tv-band strong{font-size:36px}.tv-foot-grid{grid-template-columns:1fr 1fr}
 .entry-content .alignwide{width:100%;margin-left:0;transform:none}
}


/* Singular-post routing build accent */
.tv-single-post .tv-article-head{position:relative}
.tv-single-post .tv-article-head:before{
 content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--route,var(--blue))
}
.tv-single-post .tv-article-body{position:relative}
