@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght,SOFT,WONK@9..144,400,30,1;9..144,500,30,1;9..144,600,30,1&display=swap');
:root{--ink:#182b27;--forest:#183f3b;--deep:#0f302d;--sage:#dfe8df;--mist:#f3f5ef;--paper:#faf9f4;--cream:#f4ede1;--line:#d9ddd4;--muted:#69746c;--orange:#d88957;--red:#a8473f;--white:#fff;--shadow:0 25px 70px rgba(18,44,38,.14);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans','Avenir Next',sans-serif}button,input,select{font:inherit}button,label[for="file-input"]{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}.hidden{display:none!important}.skip-link{position:absolute;left:16px;top:-50px;background:var(--white);padding:10px;z-index:100}.skip-link:focus{top:10px}:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.site-header{height:82px;display:flex;align-items:center;justify-content:space-between;gap:30px;max-width:1540px;margin:auto;padding:0 4.3%}.brand{display:flex;gap:13px;align-items:center;min-width:180px}.brand strong{font-size:22px;letter-spacing:-.06em;line-height:1}.brand small{display:block;margin-top:3px;font-size:9px;letter-spacing:.24em;font-weight:700}.brand-symbol{position:relative;width:35px;height:35px;border-radius:50%;background:var(--forest);overflow:hidden;flex:none}.brand-symbol span{position:absolute;width:32px;height:13px;border:3px solid #f6ebd5;border-radius:50%;transform:rotate(-35deg);left:8px}.brand-symbol span:nth-child(1){top:4px}.brand-symbol span:nth-child(2){top:12px}.brand-symbol span:nth-child(3){top:20px}.top-nav{display:flex;gap:38px;color:#4c5b53;font-size:13px;font-weight:600}.top-nav a:hover,.text-link:hover{color:var(--orange)}.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;border:0;border-radius:3px;font-weight:700;font-size:13px;padding:15px 21px;transition:transform .2s ease,background .2s ease}.button:hover{transform:translateY(-2px)}.button-light{border:1px solid var(--ink);background:transparent}.button-primary{background:var(--white);color:var(--deep)}.button-dark{background:var(--forest);color:var(--white)}
.hero{height:min(640px,72vw);min-height:530px;max-width:1540px;margin:0 auto;position:relative;overflow:hidden;color:var(--white);background:#547269}.hero-art{position:absolute;inset:0;background:url('assets/portada2.webp') center 62%/cover}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,38,35,.79) 0%,rgba(9,44,39,.55) 45%,rgba(13,53,46,.12) 78%),linear-gradient(0deg,rgba(10,37,30,.27),transparent 45%)}.hero-content{position:absolute;z-index:1;top:16%;left:6.3%;max-width:680px}.eyebrow{font-size:10px;letter-spacing:.22em;font-weight:700;margin:0 0 12px;color:#65796c}.hero-eyebrow{color:#e2e9da;letter-spacing:.25em}.hero h1{font-family:'Fraunces',Georgia,serif;font-weight:500;letter-spacing:-.064em;line-height:.94;font-size:clamp(70px,7.6vw,124px);margin:0}.hero h1 em{font-weight:400}.hero-copy{line-height:1.65;max-width:450px;font-size:15px;color:#edf0e7;margin:28px 0 29px}.hero-actions{display:flex;align-items:center;gap:30px}.text-link{font-weight:700;font-size:13px;border-bottom:1px solid rgba(255,255,255,.7);padding-bottom:5px}.hero-ticket{position:absolute;right:6.4%;bottom:14%;width:260px;min-height:175px;z-index:1;padding:25px;background:rgba(246,247,237,.86);color:var(--deep);border:1px solid rgba(255,255,255,.7);box-shadow:var(--shadow);backdrop-filter:blur(16px);transform:rotate(2deg)}.hero-ticket>span{font-size:10px;letter-spacing:.18em;font-weight:700}.hero-ticket strong{display:block;font-family:'Fraunces',Georgia,serif;font-size:42px;line-height:1.1;margin:18px 0 1px;font-weight:500}.hero-ticket small{font-size:12px;color:#587065}.ticket-mark{position:absolute;right:20px;top:13px;font-size:9px;line-height:.91;font-weight:700;letter-spacing:.1em;opacity:.28}.hero-caption{position:absolute;left:6.3%;bottom:28px;font-size:10px;letter-spacing:.21em;font-weight:700;opacity:.75}
.intro-strip{max-width:1540px;margin:auto;min-height:120px;display:flex;align-items:center;gap:34px;padding:0 6.3%;border-bottom:1px solid var(--line)}.intro-index,.intro-note{font-size:11px;letter-spacing:.13em;color:var(--muted);white-space:nowrap}.intro-strip p{font:400 clamp(21px,2.3vw,31px) 'Fraunces',Georgia,serif;letter-spacing:-.04em;margin:0;white-space:nowrap}.intro-strip em{color:#769483}.intro-line{height:1px;background:var(--line);flex:1}.upload-zone,.dashboard{max-width:1380px;margin:auto;padding:0 4.3%}.upload-zone{display:grid;grid-template-columns:70px 1fr auto;gap:28px;align-items:center;margin-top:65px;margin-bottom:92px;padding:38px;border:1px solid var(--line);background:var(--white);box-shadow:0 10px 35px rgba(20,53,44,.045)}.upload-zone.dragover{border-color:var(--orange);background:#fff8ed}.upload-icon{width:70px;height:70px;display:grid;place-items:center;border-radius:50%;background:var(--sage);font-size:38px;color:var(--forest)}.upload-zone h2,.section-heading h2{font:500 clamp(30px,3.4vw,48px) 'Fraunces',Georgia,serif;letter-spacing:-.055em;line-height:1.1;margin:0}.upload-zone p:not(.eyebrow){max-width:700px;color:var(--muted);line-height:1.6;margin:12px 0 0;font-size:14px}
.dashboard{padding-top:76px;padding-bottom:100px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:25px;margin:0 0 28px}.section-aside{font-size:12px;color:var(--muted);padding-bottom:8px}.file-pill{max-width:300px;display:flex;align-items:center;gap:9px;border:1px solid var(--line);padding:10px 13px;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-pill span:last-child{overflow:hidden;text-overflow:ellipsis}.live-dot{width:7px;height:7px;border-radius:50%;background:#6b9a77;flex:none}.overview-grid{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:20px}.metrics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.metric-card{min-height:168px;background:var(--white);border:1px solid var(--line);padding:25px 28px;display:flex;flex-direction:column;align-items:flex-start}.metric-card span{font-size:12px;color:#6c796f;font-weight:600}.metric-card strong{font:500 55px 'Fraunces',Georgia,serif;line-height:1.1;letter-spacing:-.06em;margin:15px 0 6px}.metric-card small{font-size:11px;color:var(--muted)}.metric-alert{background:#f0eee4}.metric-alert strong{color:#a17447}.budget-card{background:var(--forest);color:var(--white);padding:28px 31px;min-height:354px;position:relative;overflow:hidden}.budget-card:before{content:"";position:absolute;right:-90px;top:-100px;width:260px;height:260px;border:1px solid rgba(255,255,255,.12);border-radius:50%;box-shadow:0 0 0 43px rgba(255,255,255,.025),0 0 0 87px rgba(255,255,255,.02)}.budget-topline{display:flex;justify-content:space-between;align-items:center;position:relative}.budget-topline .eyebrow{color:#adc9ba;margin:0}.budget-symbol{font:36px 'Fraunces',Georgia,serif}.budget-card h3{font:400 20px 'Fraunces',Georgia,serif;margin:29px 0 2px}.budget-amount{font:500 55px 'Fraunces',Georgia,serif;letter-spacing:-.065em;line-height:1.05}.budget-progress{height:7px;border-radius:50px;background:rgba(255,255,255,.2);margin:24px 0 15px;overflow:hidden}.budget-progress span{display:block;height:100%;width:0;background:#eabf8a;transition:width .35s}.budget-progress.over span{background:#f28a70}.budget-split{display:flex;justify-content:space-between;gap:10px}.budget-split span{display:flex;flex-direction:column;gap:3px}.budget-split b{font-size:15px}.budget-split small{font-size:10px;color:#aec6b8}.budget-edit{display:flex;gap:8px;align-items:end;margin-top:30px;position:relative}.budget-edit label{position:absolute;left:0;top:-18px;font-size:10px;color:#c2d7c7}.budget-edit input{width:128px;background:rgba(255,255,255,.12);color:var(--white);border:1px solid rgba(255,255,255,.27);padding:9px 10px;outline:0}.budget-edit button{border:1px solid rgba(255,255,255,.55);background:transparent;color:var(--white);padding:9px 11px;font-size:11px}.budget-edit button:hover{background:rgba(255,255,255,.13)}.budget-warning{color:#f7d4ba;font-size:11px;line-height:1.4;margin:11px 0 0;min-height:15px}
.criteria-section,.routes-section,.centers-section{margin-top:85px}.criteria-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.criterion{padding:27px 25px 26px 0;margin-right:25px;border-right:1px solid var(--line)}.criterion:last-child{border-right:0;margin-right:0}.criterion-number{font:500 29px 'Fraunces',Georgia,serif;color:#8ba496}.criterion h3{font-size:15px;line-height:1.35;margin:18px 0 11px}.criterion p{font-size:12px;line-height:1.65;color:var(--muted);margin:0}.plan-notices{display:flex;flex-wrap:wrap;gap:8px;margin-top:19px}.notice{font-size:11px;line-height:1.35;padding:9px 12px;background:#f4ecdc;color:#6d4c2c}.notice.critical{background:#f8e6e2;color:#8b342d}.notice.good{background:#e7efe5;color:#3d694c}
.route-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.route-card{min-height:220px;border:1px solid var(--line);background:var(--white);overflow:hidden;display:flex;flex-direction:column}.route-visual{height:93px;position:relative;background:linear-gradient(135deg,#607e71,#a3ab81)}.route-visual:after{content:none}.route-card:nth-child(2) .route-visual{background:linear-gradient(135deg,#9b9f77,#526b67)}.route-card:nth-child(2) .route-visual:after{background-position:30% 65%}.route-card:nth-child(3) .route-visual{background:linear-gradient(135deg,#688b89,#bba47a)}.route-card:nth-child(3) .route-visual:after{background-position:80% 40%}.route-card:nth-child(4) .route-visual{background:linear-gradient(135deg,#af9573,#627c65)}.route-card:nth-child(4) .route-visual:after{background-position:40% 20%}.route-visual span{position:absolute;z-index:1;top:16px;left:18px;background:rgba(255,255,255,.91);padding:5px 8px;text-transform:uppercase;letter-spacing:.14em;font-size:9px;font-weight:700}.route-card-content{padding:18px;display:flex;justify-content:space-between;gap:8px;flex:1}.route-card h3{font-size:14px;line-height:1.4;margin:0;max-width:210px}.route-card p{color:var(--muted);font-size:11px;margin:9px 0 0}.route-card strong{font:500 29px 'Fraunces',Georgia,serif;white-space:nowrap}
.filters{display:grid;grid-template-columns:minmax(220px,2fr) repeat(5,minmax(126px,1fr)) auto;gap:10px;align-items:end;padding:18px;background:#e9eee7;border:1px solid #dce5db}.filters label{display:flex;flex-direction:column;gap:7px;min-width:0}.filters label span{font-size:10px;letter-spacing:.07em;font-weight:700;color:#51695a}.filters input,.filters select,.export-controls select{width:100%;min-width:0;border:1px solid #cbd8cb;border-radius:0;background:var(--white);color:var(--ink);height:39px;padding:0 10px;font-size:12px;outline:0}.filters input:focus,.filters select:focus,.export-controls select:focus{border-color:var(--forest);box-shadow:0 0 0 2px rgba(24,63,59,.1)}.clear-filters{background:transparent;border:0;color:var(--forest);font-size:11px;font-weight:700;white-space:nowrap;padding:0 0 11px}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0 14px}.table-toolbar p{font-size:12px;color:var(--muted);margin:0}.export-controls{display:flex;gap:6px;align-items:center}.export-controls label{font-size:11px;color:var(--muted);margin-right:5px}.export-controls select{width:165px;height:34px}.export-controls button{height:34px;background:var(--white);border:1px solid var(--line);padding:0 10px;font-size:11px;font-weight:700;color:var(--forest)}.export-controls button:hover{background:var(--sage)}.table-scroll{overflow:auto;border:1px solid var(--line);background:var(--white);max-height:660px}table{width:100%;border-collapse:collapse;min-width:1050px;text-align:left}thead{position:sticky;top:0;z-index:2;background:var(--forest);color:var(--white)}th{font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:15px 13px;white-space:nowrap}td{font-size:12px;padding:14px 13px;border-bottom:1px solid #e8ebe5;vertical-align:middle}tbody tr:hover{background:#f7f9f5}tbody tr.is-excluded{color:#808d82;background:#fbfbf8}tbody tr.is-excluded:hover{background:#f4f7f0}td strong{font-size:12px}td small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.center-button{padding:0;background:none;border:0;text-align:left;color:var(--ink);font-weight:700}.center-button:hover{text-decoration:underline}.route-cell select{width:290px;max-width:100%;border:1px solid var(--line);padding:8px 7px;background:var(--white);color:var(--ink);font-size:11px}.route-cell small{max-width:290px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-pill{display:inline-block;padding:5px 8px;font-size:10px;font-weight:700;white-space:nowrap;background:#e7f0e6;color:#39724b}.status-pill.out{background:#eef0eb;color:#6b756e}.status-pill.warn{background:#f8e7d6;color:#946135}.status-pill.error{background:#f9e4e2;color:#a13a35}.table-help{font-size:11px;color:var(--muted);line-height:1.5}.include-check{appearance:none;width:19px;height:19px;border:1px solid #9cae9d;display:block;margin:0;position:relative;background:var(--white);cursor:pointer}.include-check:checked{background:var(--forest);border-color:var(--forest)}.include-check:checked:after{content:'✓';position:absolute;left:4px;top:0;color:var(--white);font-size:13px}.capacity-text{font-size:10px;white-space:nowrap}.capacity-text.pending{color:#9e6b38}.capacity-text.over{color:var(--red);font-weight:700}.money{white-space:nowrap;font-weight:700}.table-empty{text-align:center;padding:45px;color:var(--muted)}
.center-dialog{width:min(650px,calc(100vw - 30px));max-height:85vh;border:0;padding:0;background:var(--paper);box-shadow:var(--shadow)}.center-dialog::backdrop{background:rgba(10,34,29,.62)}.dialog-head{display:flex;justify-content:space-between;gap:20px;padding:28px 30px 20px;border-bottom:1px solid var(--line)}.dialog-head h2{font:500 32px 'Fraunces',Georgia,serif;letter-spacing:-.05em;margin:0}.dialog-head button{border:0;background:transparent;font-size:28px;line-height:1;color:var(--forest)}#dialog-content{padding:20px 30px 30px;overflow:auto}.dialog-summary{display:flex;gap:22px;flex-wrap:wrap;padding-bottom:17px;border-bottom:1px solid var(--line);font-size:12px}.dialog-summary b{display:block;font-size:16px;margin-top:3px}.option-list{display:grid;gap:9px;margin-top:20px}.option-card{padding:15px;border:1px solid var(--line);background:var(--white);display:grid;grid-template-columns:35px 1fr auto;gap:11px;align-items:start}.option-card.active{border-color:#7ca18a;background:#f1f7ef}.option-card .rank{font:500 19px 'Fraunces',Georgia,serif;color:#779385}.option-card strong{font-size:12px}.option-card small{display:block;color:var(--muted);margin-top:4px;font-size:11px}.option-card .price{font-size:12px;font-weight:700;white-space:nowrap}.dialog-note{font-size:12px;line-height:1.6;color:var(--muted);margin:21px 0 0}.toast{position:fixed;bottom:25px;right:25px;background:var(--deep);color:var(--white);font-size:12px;line-height:1.5;padding:13px 17px;max-width:360px;z-index:20;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translateY(0)}.site-footer{max-width:1540px;margin:auto;padding:28px 4.3%;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;color:var(--muted);font-size:10px;letter-spacing:.07em}
@media(max-width:1200px){.overview-grid{grid-template-columns:1fr 340px}.filters{grid-template-columns:repeat(3,1fr)}.search-field{grid-column:span 2}.clear-filters{justify-self:start}.route-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.top-nav{display:none}.hero{min-height:580px;height:70vw}.hero-ticket{right:5%;bottom:6%;width:210px;min-height:140px;padding:20px}.hero-ticket strong{font-size:32px}.hero-content{top:13%;left:6%;max-width:580px}.hero h1{font-size:75px}.hero-copy{max-width:390px}.overview-grid{grid-template-columns:1fr}.budget-card{min-height:330px}.criteria-grid{grid-template-columns:repeat(2,1fr)}.criterion:nth-child(2){border-right:0}.criterion:nth-child(-n+2){border-bottom:1px solid var(--line)}.intro-note{display:none}}
@media(max-width:640px){.site-header{height:68px;padding:0 5%}.brand{min-width:auto}.brand strong{font-size:19px}.brand small{font-size:8px}.header-load{padding:10px 12px;font-size:11px}.hero{min-height:620px;height:86vh}.hero-art{background-position:63% center}.hero-shade{background:linear-gradient(90deg,rgba(5,38,35,.82),rgba(9,44,39,.47)),linear-gradient(0deg,rgba(9,42,35,.42),transparent 70%)}.hero-content{top:11%;left:7%;right:7%}.hero h1{font-size:clamp(61px,17vw,86px)}.hero-copy{font-size:13px;max-width:340px}.hero-actions{gap:19px;flex-wrap:wrap}.hero-ticket{right:7%;bottom:7%;width:185px;min-height:112px;padding:15px;transform:rotate(2deg)}.hero-ticket strong{font-size:26px;margin:10px 0 0}.ticket-mark{display:none}.hero-caption{bottom:18px;left:7%;font-size:8px}.intro-strip{min-height:90px;padding:0 6%;gap:12px}.intro-strip p{white-space:normal;font-size:22px}.intro-line{display:none}.intro-index{font-size:9px}.upload-zone{grid-template-columns:1fr;gap:13px;padding:23px;margin:35px 5% 60px}.upload-icon{width:50px;height:50px;font-size:28px}.upload-zone h2,.section-heading h2{font-size:34px}.dashboard{padding:56px 5% 70px}.section-heading{display:block}.section-aside{display:block;margin-top:8px}.dashboard-heading .file-pill{margin-top:19px}.metrics-grid{gap:9px}.metric-card{min-height:135px;padding:17px}.metric-card strong{font-size:40px;margin:10px 0 4px}.metric-card span{font-size:10px}.metric-card small{font-size:9px}.budget-card{padding:24px}.budget-amount{font-size:49px}.criteria-section,.routes-section,.centers-section{margin-top:65px}.criteria-grid{grid-template-columns:1fr}.criterion,.criterion:nth-child(2){border-right:0;border-bottom:1px solid var(--line);margin:0;padding:20px 0}.criterion:last-child{border-bottom:0}.criterion h3{margin:8px 0}.route-cards{grid-template-columns:1fr 1fr;gap:9px}.route-card{min-height:194px}.route-visual{height:70px}.route-card-content{padding:11px;display:block}.route-card h3{font-size:11px}.route-card strong{font-size:22px}.route-card p{font-size:9px}.filters{grid-template-columns:1fr 1fr;padding:13px;gap:8px}.search-field{grid-column:span 2}.filters label span{font-size:9px}.filters select,.filters input{font-size:11px}.clear-filters{align-self:center;padding:11px 0 0}.table-toolbar{align-items:start;flex-direction:column}.export-controls{width:100%;flex-wrap:wrap}.export-controls select{flex:1}.site-footer{display:block;padding:25px 5%}.site-footer span{display:block;margin:7px 0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}

/* The menu links to sections on the same page. */
.top-nav a{display:inline-flex;align-items:center;min-height:82px;border-bottom:2px solid transparent;white-space:nowrap}
.top-nav a:hover,.top-nav a:focus-visible{border-bottom-color:var(--forest)}
@media(max-width:900px){.top-nav{display:flex;gap:22px}.top-nav a{min-height:72px}}
@media(max-width:640px){
  .site-header{height:auto;min-height:68px;flex-wrap:wrap;column-gap:8px;row-gap:0;padding:10px 5% 0}
  .top-nav{order:3;width:100%;gap:21px;overflow-x:auto;overscroll-behavior-x:contain;height:43px;align-items:center;margin-top:8px;border-top:1px solid var(--line);scrollbar-width:none}
  .top-nav::-webkit-scrollbar{display:none}
  .top-nav a{min-height:43px;font-size:11px}
  .header-load{margin-left:auto}
}

/* Photographs supplied for the cover and route banners. */
.hero-art{background-image:url('assets/portada2.webp');background-position:center 45%}
.hero-shade{background:linear-gradient(90deg,rgba(7,33,31,.84) 0%,rgba(8,37,34,.55) 44%,rgba(8,37,34,.15) 78%),linear-gradient(0deg,rgba(7,32,29,.34),transparent 45%)}
.route-card{min-height:280px}
.route-visual{height:150px;overflow:hidden}
.route-visual:after{content:none!important}
.route-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.route-visual span{z-index:2}
@media(max-width:640px){
  .hero-art{background-position:66% center}
  .route-card{min-height:220px}
  .route-visual{height:110px}
}
