:root{--ink:#17332d;--muted:#61716d;--cream:#f7f5ef;--surface:#fff;--line:#e2e7e4;--green:#0c705c;--green-dark:#075244;--gold:#e7aa3b;--shadow:0 12px 35px rgba(21,51,45,.1)}
*{box-sizing:border-box} body{background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif;line-height:1.55} a{text-decoration:none} h1,h2,h3,.display-font{font-family:'Playfair Display',serif;letter-spacing:-.025em}.site-nav{background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:.65rem;color:var(--ink)!important;font-weight:700;line-height:1}.brand small{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}.brand-mark{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:.75rem;background:var(--green);color:#fff;font-family:'Playfair Display',serif;font-size:1.35rem}.nav-link{color:var(--muted)!important;font-weight:600;padding:.6rem .85rem!important;border-radius:.5rem}.nav-link:hover,.nav-link.active{color:var(--green-dark)!important;background:#e7f2ef}.site-footer{background:#12352e;color:#dce7e3}.site-footer p{color:#9fb6af;font-size:.92rem}.footer-links{display:flex;gap:1.25rem;align-items:center}.footer-links a{color:#fff;font-weight:600}.hero{padding:5rem 0 4.5rem;background:radial-gradient(circle at 80% 10%,#d8eee5 0,transparent 32%),var(--cream)}.eyebrow{color:var(--green);text-transform:uppercase;letter-spacing:.12em;font-size:.78rem;font-weight:700}.hero-title{font-size:clamp(2.6rem,6vw,5rem);line-height:1.03;max-width:11ch}.hero-copy{font-size:1.12rem;color:var(--muted);max-width:52ch}.search-card,.content-card{background:var(--surface);border:1px solid var(--line);border-radius:1.25rem;box-shadow:var(--shadow)}.search-card{padding:1.25rem}.btn-primary{background:var(--green);border-color:var(--green);font-weight:700}.btn-primary:hover{background:var(--green-dark);border-color:var(--green-dark)}.btn-warning{background:var(--gold);border-color:var(--gold);font-weight:700;color:var(--ink)}.page-header{padding:3.5rem 0 2rem}.page-header p{color:var(--muted);font-size:1.05rem}.destination-card{display:block;height:100%;overflow:hidden;border-radius:1rem;background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:0 5px 16px rgba(21,51,45,.06);transition:.22s ease}.destination-card:hover{color:var(--ink);transform:translateY(-5px);box-shadow:var(--shadow)}.destination-card img{width:100%;height:180px;object-fit:cover}.destination-card__body{padding:1.05rem 1.15rem}.destination-card__body h3{font-size:1.35rem;margin:0}.destination-card__body span{display:block;margin-top:.35rem;color:var(--green);font-weight:700;font-size:.85rem}.empty-state{padding:3.5rem 1rem;text-align:center;color:var(--muted)}.table{background:#fff;border-radius:1rem;overflow:hidden}.table thead{background:var(--green);color:#fff}.form-control,.form-select{border-color:#cfd8d4;padding:.7rem .85rem}.form-control:focus,.form-select:focus{border-color:var(--green);box-shadow:0 0 0 .2rem rgba(12,112,92,.14)}.card{border:1px solid var(--line);border-radius:1rem;box-shadow:var(--shadow)}
.process-card{display:block;color:var(--ink);transition:transform .2s ease,box-shadow .2s ease}.process-card:hover{color:var(--ink);transform:translateY(-4px);box-shadow:0 18px 38px rgba(21,51,45,.14)}.process-card>span{color:var(--green);font-weight:700}.map-panel{padding:1rem;border:1px solid var(--line);border-radius:1rem;background:#f8fbfa}.municipio-map{height:300px;border-radius:.75rem;overflow:hidden;border:1px solid #d5e1dc}.map-status{flex:0 0 auto;padding:.25rem .5rem;border-radius:99px;background:#eef2f0;color:var(--muted);font-size:.72rem;font-weight:700;white-space:nowrap}.map-status.is-set{background:#dcefe7;color:var(--green-dark)}.route-map-card{position:sticky;top:5.5rem}.route-map{height:360px;border-radius:.8rem;overflow:hidden;border:1px solid var(--line)}.route-option{cursor:pointer;border-left:4px solid transparent;transition:border-color .2s ease,box-shadow .2s ease}.route-option:hover,.route-option.is-active{border-left-color:var(--green);box-shadow:0 12px 28px rgba(21,51,45,.12)}.route-option__badge{align-self:flex-start;background:#e7f2ef;color:var(--green-dark);font-size:.8rem;font-weight:700;padding:.3rem .6rem;border-radius:99px}
@media(max-width:991px){.site-nav .navbar-collapse{padding:1rem 0}.hero{padding:3.5rem 0}.hero-title{max-width:14ch}.footer-links{align-items:flex-start;flex-direction:column;gap:.45rem}.municipio-map{height:260px}.route-map-card{position:static}.route-map{height:300px}}
.admin-session-bar{background:#12352e;color:#fff;border-bottom:1px solid rgba(255,255,255,.14)}.admin-session-profile{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem .65rem;font-size:.9rem}.admin-session-label{color:#9fb6af;text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:700}.admin-session-profile>span:not(.admin-session-label):not(.admin-session-role){color:#dce7e3}.admin-session-role{padding:.15rem .5rem;border-radius:999px;background:#d8eee5;color:#12352e;font-size:.75rem;font-weight:700}
.municipio-autocomplete-container{position:relative}.municipio-autocomplete-results{position:absolute;z-index:1050;left:0;right:0;max-height:15rem;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:.55rem;box-shadow:0 10px 24px rgba(21,51,45,.16);margin-top:.25rem}.municipio-autocomplete-option{display:block;width:100%;padding:.65rem .85rem;border:0;background:#fff;color:var(--ink);text-align:left}.municipio-autocomplete-option:hover,.municipio-autocomplete-option:focus{background:#e7f2ef;color:var(--green-dark);outline:none}
.bus-stop-row{display:grid;grid-template-columns:2rem minmax(150px,2fr) minmax(115px,1fr) minmax(140px,1fr) auto;gap:.55rem;align-items:center;padding:.75rem 0;border-bottom:1px solid var(--line)}.bus-stop-number{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:var(--green);color:#fff;font-weight:700}.bus-stop-row .btn{padding:.45rem .6rem}@media(max-width:767px){.bus-stop-row{grid-template-columns:2rem 1fr}.bus-stop-row .stop-municipality,.bus-stop-row .stop-time,.bus-stop-row .input-group,.bus-stop-row .btn-group{grid-column:2}}
