/* Redfiber 17 */
html{scroll-behavior:smooth}button,a,input,summary{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #ef233c;outline-offset:4px}
.rf-home{background:#f7f8fc}.rf-home .container{max-width:1220px}.rf-home .hero{padding:100px 0 85px;position:relative;background:radial-gradient(ellipse at 90% 15%,#ffe3e8,transparent 55%)}.rf-home .hero h1{line-height:1.04;font-size:clamp(48px,6vw,78px)}.rf-home .hero-card{padding:36px;border-radius:28px;box-shadow:0 28px 80px #26354b18;animation:rf-float 7s ease-in-out infinite}.rf-home .speed{display:flex;flex-direction:column;gap:14px;margin:42px 0 30px;font-size:clamp(36px,4vw,54px);line-height:1.12;letter-spacing:-.04em}.rf-home .speed small{display:block;letter-spacing:normal;font-size:16px;font-weight:500;line-height:1.5}.rf-home .signal{gap:16px;flex-wrap:wrap}.rf-live-label{font-size:10px;letter-spacing:.16em;font-weight:800;color:#b51f49}.rf-home .section{padding:72px 0}.rf-home .section-title{max-width:720px;margin-bottom:32px}.rf-home .section-title h2{font-size:clamp(28px,4vw,42px);letter-spacing:-.035em;line-height:1.15}.rf-home .card{border-radius:24px;transition:transform .25s,box-shadow .25s}.rf-home .card:hover{transform:translateY(-4px);box-shadow:0 18px 45px #15223812}.rf-home .rf-plans{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.rf-plan-label{font-size:11px;letter-spacing:.1em;font-weight:800;color:#a32041}.rf-home .plan h3{font-size:48px;margin:25px 0 0;letter-spacing:-.04em}.rf-home .plan h3 small{font-size:17px;letter-spacing:normal}.rf-home .plan p{font-size:12px;color:#667085}.rf-plan-price{font-size:21px;font-weight:800;margin:22px 0}.rf-home .plan .btn{width:100%}.rf-home .plan:last-child{background:#18253d;color:#fff}.rf-home .plan:last-child .checks,.rf-home .plan:last-child p,.rf-home .plan:last-child .rf-plan-label{color:#e0e6f0}.rf-home .promo-card{border-radius:26px}.rf-home .promo-big{font-size:clamp(30px,4vw,46px)}.rf-home .btn{transition:transform .2s,box-shadow .2s}.rf-home .btn:hover{transform:translateY(-2px);box-shadow:0 8px 18px #15223818}.rf-home .footer{background:#fff}.rf-home .rf-reveal{animation:rf-enter .6s ease both}
@keyframes rf-float{50%{transform:translateY(-8px)}}@keyframes rf-enter{from{opacity:.4;transform:translateY(18px)}to{opacity:1;transform:none}}
.rf-admin .main{min-width:0}.rf-admin .sidebar{overflow-y:auto}.rf-admin .side-nav{gap:3px}.rf-admin .side-nav button{padding:10px 12px}.rf-nav-fold summary{padding:12px;cursor:pointer;font-weight:700;color:#344054}.rf-nav-fold button{display:block;width:100%}.rf-fold>summary{cursor:pointer;font-size:17px;font-weight:750;padding:2px 0;list-style:none;display:flex;justify-content:space-between;align-items:center}.rf-fold>summary:after{content:'+';font-size:24px;font-weight:400;color:#b51f49}.rf-fold[open]>summary:after{content:'−'}.rf-fold[open]>summary{margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid #e7eaf0}.rf-fold>summary::-webkit-details-marker{display:none}.rf-fold:not([open]){overflow:hidden}.rf-admin .panel{scroll-margin-top:20px}.rf-user-list{display:grid;gap:10px;margin:16px 0 24px}.rf-user-row{display:flex;gap:12px;justify-content:space-between;align-items:center;border:1px solid #e1e6ec;border-radius:12px;padding:12px}.rf-user-row small{display:block;color:#667085}
.urban-map-wrap{background:#e6eddf;padding:22px}.urban-grid{min-width:1300px;gap:0;background:linear-gradient(to right,transparent calc(50% - 32px),#414955 calc(50% - 32px),#414955 calc(50% + 32px),transparent calc(50% + 32px))}.street-layout{grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);gap:0;padding:22px 0}.street-pair{grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr)}.street-block{background:#e6eddf;border:0;border-radius:0;padding:12px 10px}.street-block-label,.plaza-mark{display:none}.street-central-gap{background:#414955}.street-central-gap:before{left:50%;top:-22px;bottom:-22px;border:0;width:3px;background:repeating-linear-gradient(to bottom,#f8e6a1 0 16px,transparent 16px 32px)}.street-road{height:68px;margin:12px -10px;background:#414955;border-top:2px solid #fff;border-bottom:2px solid #fff;color:#fff;position:relative}.street-road:before{content:'';position:absolute;left:0;right:0;top:50%;height:2px;background:repeating-linear-gradient(to right,#f8e6a1 0 15px,transparent 15px 29px)}.street-road .road-name{position:absolute;bottom:4px;right:8px;opacity:1;font-size:10px;letter-spacing:.07em;background:#414955;padding:2px 5px;border-radius:3px}.street-plaza{background:#d4e1c7;min-width:18px}.nap-marker{top:17px;width:26px;height:28px;border-radius:4px;background:#eff5fa;border:2px solid #173b55;box-shadow:0 2px 4px #0004;color:#173b55}.nap-marker .nap-box{opacity:1;width:16px;height:18px;border:1px solid #526d7f;border-radius:2px;background:repeating-linear-gradient(to bottom,#d1dce4 0 3px,#f4f7fa 3px 6px)}.nap-marker small{top:auto;bottom:-11px;color:#fff;font-size:7px;background:#173b55;border-radius:2px;padding:0 2px}.map-house{border-color:#8d9989;color:#17243a}.rf-admin .house-modal{background:#fff;color:#152238}.rf-admin .modal-close{background:#eef1f4;color:#152238}
@media(max-width:1000px){.rf-home .rf-plans{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-home .hero-grid{gap:30px}.rf-admin .side-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}.rf-nav-fold{grid-column:1/-1}.rf-nav-fold[open]{display:block}.rf-nav-fold button{display:inline-block;width:auto}.rf-admin .sidebar{position:relative}}
@media(max-width:600px){.rf-home .hero{padding:48px 0}.rf-home .hero-card{padding:24px}.rf-home .section{padding:46px 0}.rf-home .rf-plans{grid-template-columns:1fr}.rf-home .signal strong{font-size:16px}.rf-home .speed{font-size:40px;margin:28px 0}.rf-admin .main{padding:14px}.rf-admin .side-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-admin .panel-head{align-items:flex-start;flex-wrap:wrap}.rf-admin #rfAdminUserForm{grid-template-columns:1fr}.rf-home .nav-inner{gap:12px}.rf-home .logo{max-width:145px}.rf-home .portal-link{padding:10px;font-size:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
/* 17.1: jardines entre calles y separación uniforme de viviendas */
.urban-grid .street-layout{padding:4px 0}
.urban-grid .street-pair{grid-template-columns:minmax(0,1fr) 0 minmax(0,1fr)}
.urban-grid .street-pair>.street-block:first-child{padding:0 4px 0 10px}
.urban-grid .street-pair>.street-block:last-child{padding:0 10px 0 4px}
.urban-grid .street-pair>.street-block:first-child .street-road{margin-left:-10px;margin-right:-4px}
.urban-grid .street-pair>.street-block:last-child .street-road{margin-left:-4px;margin-right:-10px}
.urban-grid .street-plaza{min-width:0;width:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:8;pointer-events:none}
.plaza-garden{flex:0 0 68px;width:68px;height:68px;border:3px solid #d0d8c6;background:#aeca98;position:relative;box-sizing:border-box;display:grid;place-items:center}
.plaza-garden:before{content:'';position:absolute;inset:7px;background:linear-gradient(45deg,transparent 46%,#e6dcc1 46%,#e6dcc1 54%,transparent 54%),linear-gradient(-45deg,transparent 46%,#e6dcc1 46%,#e6dcc1 54%,transparent 54%)}
.plaza-garden i{position:absolute;width:14px;height:14px;border-radius:50%;background:#628b4c;border:2px solid #7b9f5e;box-shadow:1px 2px 0 #456a3833}
.plaza-garden i:nth-child(1){left:6px;top:6px}.plaza-garden i:nth-child(2){right:6px;top:6px}.plaza-garden i:nth-child(3){left:6px;bottom:6px}.plaza-garden i:nth-child(4){right:6px;bottom:6px}
.urban-grid .street-central-gap:before{top:-4px;bottom:-4px}
.urban-grid .street-pair>.street-block:first-child .road-name{right:40px}
/* 17.2: calle lateral, principal superior y término de la calle central */
.urban-map-wrap .urban-grid{min-width:1364px;padding:68px 0 0 64px;background:#e6eddf;isolation:isolate}
.map-west-road{position:absolute;left:0;top:0;bottom:0;width:64px;background:#414955}
.map-west-road:before{content:'';position:absolute;left:31px;top:34px;bottom:0;width:3px;background:repeating-linear-gradient(to bottom,#f8e6a1 0 16px,transparent 16px 32px)}
.map-main-road{position:absolute;top:0;left:0;right:0;height:68px;background:#414955;color:white}
.map-main-road:before{content:'';position:absolute;top:33px;left:32px;right:0;height:2px;background:repeating-linear-gradient(to right,#f8e6a1 0 15px,transparent 15px 29px)}
.map-main-road span{position:absolute;right:18px;bottom:7px;font-size:11px;font-weight:900;letter-spacing:.08em}
.urban-grid .street-layout[data-street="D"] .street-central-gap{background:linear-gradient(to bottom,#414955 0 calc(50% + 34px),transparent calc(50% + 34px) 100%)}
.urban-grid .street-layout[data-street="D"] .street-central-gap:before{bottom:calc(50% - 34px)}
.urban-grid .street-layout{background:linear-gradient(to right,transparent calc(50% - 32px),#414955 calc(50% - 32px),#414955 calc(50% + 32px),transparent calc(50% + 32px))}
.urban-grid .street-layout[data-street="D"]{background:none}
.urban-grid .street-layout[data-street="D"] .street-central-gap:after{content:'';position:absolute;top:-4px;left:0;right:0;height:4px;background:#414955}
.map-main-road span{left:110px;right:auto}
/* 17.3: calle lateral derecha */
.urban-map-wrap .urban-grid{min-width:1428px;padding-right:64px}
.map-east-road{position:absolute;right:0;top:0;bottom:0;width:64px;background:#414955}
.map-east-road:before{content:'';position:absolute;left:31px;top:34px;bottom:0;width:3px;background:repeating-linear-gradient(to bottom,#f8e6a1 0 16px,transparent 16px 32px)}
.urban-grid .street-central-gap:before{z-index:1;pointer-events:none}
